first commit, will clean up some code in a bit