• High level design: