improve respond-to mixin