each types has their own object