code: def tier(self, *args, append=True, source=None, **kwargs):
          
          if len(args) == 1 and not kwargs and callable(args[0]):
              raise TypeError('Uncalled decorator syntax is invalid')
  
          def decorator(coro):
              if not asyncio.iscoroutinefunction(coro):
                  coro = asyncio.coroutine(coro)
              if append and source is None:
                  self.append_tier(coro, *args, **kwargs)
              else:
                  self.add_tier(coro, *args, source=source, **kwargs)
              return coro
          return decorator
docs: Function decorator for a tier coroutine.  If the function being
          decorated is not already a coroutine function it will be wrapped.