refactoring for core mostly done

needs tests, validators, and coverage