initial commit, still a lot of problems, need to add a lot of functionality