loose framework
big refactor