Depend upon Abstractions