Initial commit post massive re-factor and basic testing