What does it mean to "program to an interface"?