checkpoint
Major code refactor
code refactor