First complete version with Modular and separated classes