add Routable framework, comments and update some code