upgrade: use a method rather than a boolean flag
wip