completed abstracting control structure