Pulls out common logic from decorator and mixin, and adds check for configuration

I find the try/except kind of ugly for this situation.  I'll change it to a isinstance test to capture more cases