more refectoring - extracted all direct chat <-> engine comms into interfaces