Initial Commit after refractoring.