cleaned up with comments and shit