bug fixes, observer pattern implementation needed