Reorganized and cleaned up some of the code