Refactor ProxyTask to be a conrete Task subclass instead of a mixin