refactors class names and file structure