why do we need `type` then?