Refactored and Reorganized in a few areas.