Why do we need a separate interface for this? Why not just list?