Separate structs and message handlers.