issue #21, issue #22: code complete