#9 Reimplement using hierarchy model
#9 Reimplement using hierarchy model. Fix issues
#9 Implement scrolling