abstract the dialogue away so it can be implementing using an abritrary GUI frontend...