implemented all classes, added observer, finished textui