Updated with better descriptions
Cleaned up code and added some comments
Slight updates