Refactoring: separation of several classes into their own files.