add message struct; decode messages; switch reader to use message handler