Extensive refactoring of the code. Split the features into 5 distinct modules.