Cleaned up and added comments