Initial message dispatch functionality

A lot of iteration is done using for loops.  This is intentional.
Iterators *will* break this code.