Programming to an interface