Reimplement generic templates replacing t_members by user algorithms. 1) User code is responsible to store generated pointer in the base object and lazy cast to such object from derived ones 2) Register names of the algorithms in DAL factory and implement search and upcasting of DAL objects to run such algorithms using generated get() method See ADTCC-177 for more details