Considerations in block-oriented systems design | Synapse