Separated functionality into separate files.