implement message builder and dispatcher