implement train