refactoring
redesign subscription api to support value,child_added,child_removed and child_changed