trying type erase, incomplete