use the  type variable deciphering facilities we have at our disposal