return Shams from calls, and switch to weakref for data storage