not good
rewrote promises, added observable, fixed code WRT hashes