type delcaration