all wrong
before train; do self pool thread