refs #18: refactor