Initial commit. Need to clean up formatting and comment.