use composite type