Refactored out the animation into an animator class

This isn't as generic as I'd like it because of the issues with axis
types and annotation types. It works here, and can be extended to be
made more useful should it be necessary.