Initial add - lots of refactoring to go