Controller+View+Observer pattern library