handles multiple 'trains' - simultaneous connections coming into the same socket
add reset functionality (and m4 files into gitignore)