Moved ImageObserver to separate file