turns out, anonymous inner classes aren't serializable; converting all Node.Listener's to Command