Prefactoring: Extreme Abstraction - Extreme Separation - Extreme Reliability