Separated classes and functions into different files for readability