Merge Ability

I've merged the updated code with my Ability branch, and now we need to add the code I wrote for Ability, AI, and an updated Driver to the master branch.