Commit of code so far. Fully functional, not fully designed yet.