Refactored to use a type library to deserialize events to destination types