Use custom types so they can be inlined