concept Screenshot { *() {} // for persistance *(BufferedImage img) { savePNG(pngFile(), img); } File pngFile() { ret prepareProgramFile("screenshot" + id + ".png"); } } concept MarkedClip { Screenshot screenshot; // hmm... Rect positionInScreenshot; BWImage img; S description; }