add new classes and project refacto