initial commit. need to error handling and comments.