First commit: all changes so far (might need to add .gitignore and sort out a few things next)