Designing Software for Ease of Extension and Contraction | Synapse