simplify external interface; custom types