Why do we need an interface here?