Use instance_eval instead of yielding to allow setting up 'hear' listeners