refactoring the structure
add gitignore