Use generics when executing a Task on a client, involved refactorings
/ generics on TaskObservers as well.