refactoring including adding include directory.  Still need additional refactoring for testing.