The problem I see with having MailConductor inherit from *Control is that you'll have to be very careful how you name the members of each class (given that both do similar things). It would be less error prone to have MailConductor *contain* an imap and smtp control, plus you wouldn't have to use "smtp" in the member names of SMTPControl and the same for imap, which would be more writable/readable too.