Abstracted out some spell functionality to GenericSpell.cs