Attempt to create sane project structure to organize related components.
Update .gitignore