refactored into new class, add gitignore