implement functions
some refactorings
add .project