Reorganize and simplify. I think we still need to initialize all trainers.
Trainer generator