Add reflection for data access. Major Refactoring.