removed super and isA and simplified the source structure