Cleaned up classes with better seperation and readability