Big refactoring with packages. 
Please try to modularize as much as possible !