Refactored abilities to be more data driven

fixes #364