design work on types and protocols