added some research with adt types