refactoring as I update the various parts