removed the observe-js dependency, switched bower out for npm, update code to support recursive data structures