! refactored & added gitignore