consistently name all abstract interfaces with an 'I' suffix