Functionality complete. Need to add comments and documentation.