refactoring done. just need to implement. will clean up git next too.