-code rehaul
-added observer based changes