message trains seems to work, needs some cleanup.
now with callbacks.