Made interfaces more generic to support more efficient storage in different backends