stepwise refinement

top-down design