General Refactoring

General Refactoring