move generics to a different directory, add task sending framework