Added Observable support, review some design and simplification of some things