refactoring to isolate functional classes from fundation packages