Make better use of interfaces