Separated the project in small modules to make it more maintanable