So why do we have an interface for this? Are we planning on making multiple implementations of this this or is there another reason to have this?