Initial commit, need to add comments.