initial commit, lots of code