Refactor completely. Classify and modulable