added new interface method; add based on shared pointer