You could split it in parts: a image viewing component, and applications that use it. One could be solely a viewer for a single image which can maybe zoom, and one that can do slideshows and associated things, and maybe later someone makes other applications that use the component.
Try to define ShowImage now - is it an image viewer or a slideshow displayer? Now try justifying adding these useful slideshow features in "*ShowImage* R2":
* User-definable caption for each picture based on a BeOS attribute * Transitions * Changing the order pictures are displayed in * Displaying files stored in different directories
I think most people would call them "bloat" for ShowImage. However, given a show image with navigation consisting of "Prev Image, Next Image, View Slideshow" and a seperate slideshow app specifically designed for the purpose (say with a list view listing the files to be displayed, allowintg drag-and-drop to add files or change the order), it is much easier to justify new slideshow-specific features for the slideshow-specific app.