Cleaned up the code, added a pile of comments to help others understand what is happening
Added spindle reference