initial commit, still need to clean up serveral things