idempotent changes: rearrange some methods in impl; minor comment changes