Programming to the interface