Changed up the organization a bit and added some comments