yield is clearer than instance_eval in this context