I'd be careful with wanting to shoehorn everything into an inheritance hierarchy.  Sometimes you see commonalities between two things and decide to make an inheritance hierarchy out of it, but then it turns out that the two things evolve in different ways and you're left adding lots of complicated logic on top of your generic solution to handle different contingencies.  Sometimes its better to just keep things simple and separated.