So far this is the only way to have a common signature in StorageManager, for the caller point of view, they should not be aware that the underlying SM (a.k.a duck typing). 

One alternative is that use a structure to union several different fields together. But the current signature, only two fields need to be put into the structure, which actually adds more overhead for the ppl who use StorageManager.