a bunch of the helpers below don't make use of `self`. could they be bare functions?