Type Checking Decorator