make types generic
make types generic