function buildNumberUnitMethods() {
    defineInstanceSimilar(sugarNumber, DateUnits, function(methods, unit) {
      var name = unit.name, base, after, before;
      base = function(n) {
        return round(n * unit.multiplier);
      };
      after = function(n, d, options) {
        return advanceDate(createDate(d, options, true), name, n);
      };
      before = function(n, d, options) {
        return advanceDate(createDate(d, options, true), name, -n);
      };
      methods[name] = base;
      methods[name + 's'] = base;
      methods[name + 'Before'] = before;
      methods[name + 'sBefore'] = before;
      methods[name + 'Ago'] = before;
      methods[name + 'sAgo'] = before;
      methods[name + 'After'] = after;
      methods[name + 'sAfter'] = after;
      methods[name + 'FromNow'] = after;
      methods[name + 'sFromNow'] = after;
    });
  }
@method [dateUnit]()
@returns Number
@short Takes the number as a unit of time and converts to milliseconds.
@extra Method names can be singular or plural.  Note that as "a month" is
       ambiguous as a unit of time, `months` will be equivalent to 30.4375
       days, the average number in a month. Be careful using `months` if you
       need exact precision.

@set
  millisecond
  milliseconds
  second
  seconds
  minute
  minutes
  hour
  hours
  day
  days
  week
  weeks
  month
  months
  year
  years

@example

  (5).milliseconds() -> 5
  (10).hours()       -> 36000000
  (1).day()          -> 86400000

**
@method [dateUnit]Before(d, [options])
@returns Date
@short Returns a date that is `n` units before [d], where `n` is the number.
@extra [d] will accept a date object, timestamp, or text format. Note that
       "months" is ambiguous as a unit of time. If the target date falls on a
       day that does not exist (i.e. August 31 -> February 31), the date will
       be shifted to the last day of the month. Be careful using
       `monthsBefore` if you need exact precision. [options] can be an object
       or a locale code as a string. See `create` for more.


@set
  millisecondBefore
  millisecondsBefore
  secondBefore
  secondsBefore
  minuteBefore
  minutesBefore
  hourBefore
  hoursBefore
  dayBefore
  daysBefore
  weekBefore
  weeksBefore
  monthBefore
  monthsBefore
  yearBefore
  yearsBefore

@example

  (5).daysBefore('tuesday')          -> 5 days before tuesday of this week
  (1).yearBefore('January 23, 1997') -> January 23, 1996

@param {string|number|Date} d
@param {DateCreateOptions} options

**
@method [dateUnit]Ago()
@returns Date
@short Returns a date that is `n` units ago.
@extra Note that "months" is ambiguous as a unit of time. If the target date
       falls on a day that does not exist (i.e. August 31 -> February 31), the
       date will be shifted to the last day of the month. Be careful using
       `monthsAgo` if you need exact precision.

@set
  millisecondAgo
  millisecondsAgo
  secondAgo
  secondsAgo
  minuteAgo
  minutesAgo
  hourAgo
  hoursAgo
  dayAgo
  daysAgo
  weekAgo
  weeksAgo
  monthAgo
  monthsAgo
  yearAgo
  yearsAgo

@example

  (5).weeksAgo() -> 5 weeks ago
  (1).yearAgo()  -> January 23, 1996

**
@method [dateUnit]After(d, [options])
@returns Date
@short Returns a date `n` units after [d], where `n` is the number.
@extra [d] will accept a date object, timestamp, or text format. Note that
       "months" is ambiguous as a unit of time. If the target date falls on a
       day that does not exist (i.e. August 31 -> February 31), the date will
       be shifted to the last day of the month. Be careful using
       `monthsAfter` if you need exact precision. [options] can be an object
       or a locale code as a string. See `create` for more.

@set
  millisecondAfter
  millisecondsAfter
  secondAfter
  secondsAfter
  minuteAfter
  minutesAfter
  hourAfter
  hoursAfter
  dayAfter
  daysAfter
  weekAfter
  weeksAfter
  monthAfter
  monthsAfter
  yearAfter
  yearsAfter

@example

  (5).daysAfter('tuesday')          -> 5 days after tuesday of this week
  (1).yearAfter('January 23, 1997') -> January 23, 1998

@param {string|number|Date} d
@param {DateCreateOptions} options

**
@method [dateUnit]FromNow()
@returns Date
@short Returns a date `n` units from now.
@extra Note that "months" is ambiguous as a unit of time. If the target date
       falls on a day that does not exist (i.e. August 31 -> February 31), the
       date will be shifted to the last day of the month. Be careful using
       `monthsFromNow` if you need exact precision.

@set
  millisecondFromNow
  millisecondsFromNow
  secondFromNow
  secondsFromNow
  minuteFromNow
  minutesFromNow
  hourFromNow
  hoursFromNow
  dayFromNow
  daysFromNow
  weekFromNow
  weeksFromNow
  monthFromNow
  monthsFromNow
  yearFromNow
  yearsFromNow

@example

  (5).weeksFromNow() -> 5 weeks ago
  (1).yearFromNow()  -> January 23, 1998

*