a little more code reuse