cleaned up classes, commented everything and added some properties code which is cleaner