       it "calls animate with the defaults", ->
         spyOn(a, '_animate')
         spyOn(a, '_animateNextMonth')
-        spyOn(a, '_animateNextMonthPrepare')
-        spyOn(a, '_animateNextMonthCallback')
         a.nextMonth()
-        expect(a._animate).toHaveBeenCalledWith(a._animateNextMonthPrepare,
-          a._animateNextMonth, a._animateNextMonthCallback,
+        expect(a._animate).toHaveBeenCalledWith(a._animateNextMonth,
           'nextMonthFinished')
+
+  describe "#close", ->
+    describe "when given custom animations", ->
+      animation = jasmine.createSpy('custom animation mock')
+      beforeEach ->
+        options =
+          close: animation
+        a = new chronos.Animator(pm, options)
+
+      it "calls animate with the correct arguments", ->
+        spyOn(a, '_animate')
+        a.close()
+        expect(a._animate).toHaveBeenCalledWith(animation, 'close')
+
+    describe "without custom animations", ->
+      beforeEach ->
+        a = new chronos.Animator(pm, {})
+
+      it "calls animate with the defaults", ->
+        spyOn(a, '_animate')
+        spyOn(a, '_animateClose')
+        a.close()
+        expect(a._animate).toHaveBeenCalledWith(a._animateClose, 'close')
 
 
   describe "private methods", ->
 
     describe "_animate", ->
-      before = jasmine.createSpy("before mock")
       animation = jasmine.createSpy("animation mock")
-      after = jasmine.createSpy("after mock")
       eventname = "eventName"
       beforeEach ->
         a.pickerManager = jasmine.createSpy("pickerManager mock")


  describe "#previousMonth", ->
    describe "when given custom animations", ->
      pmp = jasmine.createSpy("previousMonthPrepare mock")
      pma = jasmine.createSpy("previousMonth mock")
      pmc = jasmine.createSpy("previousMonthCallback mock")
      beforeEach ->
        options =
          previousMonthPrepare: pmp
          previousMonth: pma
          previousMonthCallback: pmc
        a = new chronos.Animator(pm, options)

      it "calls animate with the correct arguments", ->
        spyOn(a, '_animate')
        a.previousMonth()
        expect(a._animate).toHaveBeenCalledWith(pmp, pma, pmc, 'previousMonthFinished')

    describe "without custom animations", ->
      beforeEach ->

      it "calls animate with the defaults", ->
        spyOn(a, '_animate')
        spyOn(a, '_animatePreviousMonth')
        a.previousMonth()
        expect(a._animate).toHaveBeenCalledWith(a._animatePreviousMonth,
          'previousMonthFinished')


  describe "#nextMonth", ->
    describe "when given custom animations", ->
      animation = jasmine.createSpy('custom animation mock')
      beforeEach ->
        options =
          nextMonth: animation
        a = new chronos.Animator(pm, options)

      it "calls animate with the correct arguments", ->
        spyOn(a, '_animate')
        a.nextMonth()
        expect(a._animate).toHaveBeenCalledWith(animation, 'nextMonthFinished')

    describe "without custom animations", ->
      beforeEach ->
