seems like that logic might fit better at call time (below) instead of definition time but whatevs.