Modularize and cabalize.
Add .gitignore