Big refactor to ease animation changes.