ex18 code complete