refactoring of terms to be more general, trainers are much simpler and generic