First code commit, most classes are filled, but untested