I'm looking into redesigning the powers/ability APIs but I need some feedback. Currently the system is very chaotic and includes 7 different interfaces for very niche things, some of which aren't even currently used. I'm looking to simplify it down and make it more logical. It's currently setup like this: Now if you're wondering why it was setup to differentiate between powers and abilities in the first place, the reason was because in RS3 the way we identified abilities for a long time was via actionbar ids. If you know anything about me, it's probably that I hate using ids. This was proven even further by the fact that the 13th and 14th slots of the actionbar don't follow the same specs as the other 12. The first step I'm taking is to scrap the getId method in the Power class which allows me to get rid of Power, ActivateablePower, and ToggleablePower. Next I want to get rid of ActivatablePower, because all powers are activateable and it's a redundant distinction. It was previously set aside so that it could have activate and things that could be toggled would have a toggle method instead, but I've decided to make ActivateablePower have isActivated and deactivate instead of a toggle method. The structure that I'm currently looking into it this: Code (Text): -Ability Pair<Skill, Integer> getRequiredLevels boolean activate String getName -ToggleableAbility extends Ability boolean deactivate boolean isActivated -CombatAbility extends ToggleableAbility boolean isCoolingDown int getAdrenalineRequired Now what I need to know is this: Can you think of any situations where an ability or power doesn't clearly fit in one of these classes? (Remember, OSRS and RS3) Is there any flaws with this structure that you could see making development more difficult? What am I missing in this structure? --- Double Post Merged, Jun 15, 2015, Original Post Date: Jun 15, 2015 --- According to the wiki, depending on the ability class they drain a set percentage of the ability bar so perhaps getAdrenalineRequired isn't needed as long as the class of the ability is provided?