Updated interface definition to use generics to make it easier for clients