Refactor, parameter restrictions, adding .gitignore