         resize:
           delay: 300
           easing: 'ease-in-out'
-      # - `followUsingTransform` will automatically check CSS transforms support
-      #   via Modernizr. So you'll need to use Modernizr or manually enable this
-      #   option to use the more performant transforms.
       followUsingTransform: window.Modernizr?.csstransforms
 
+  # Within `$.hlf.tip` is a subnamespace for the `snapTip` plugin
+  # __$.hlf.tip.snap__.
+  #
+  # Its __defaults__ extend `tip`'s defaults.
+  # 
+  # - __snap.toXAxis__ is the switch for snapping along x-axis and only
+  #   following along y-axis. Off by default.
+  # - __snap.toYAxis__ is the switch for snapping along y-axis and only
+  #   following along x-axis. Off by default.
+  # - __snap.toTrigger__ is the switch for snapping to trigger built on
+  #   axis-snapping. On by default.
   hlf.tip.snap =
     debug: off
     toString: _.memoize (context) ->

          classNames.tip = 'js-tip js-snap-tip'
          classNames

  # §

  # Tip Implementation
  # ------------------
  # Read on to learn about implementation details.
  class Tip

    # ƒ `constructor` keeps `$triggers` and `$context` as properties. `options`
    # is further normalized.
    constructor: (@$triggers, options, @$context) ->
      for own name, animation of options.animations when name isnt 'base'
        _.defaults animation, options.animations.base

    # ƒ `init` offloads non-trivial setup to other subroutines.
    init: ->
      _.bindAll @, '_onTriggerMouseMove', '_setBounds'
      # - Initialize tip element.
      @_setTip $ '<div>'
      # - Infer `doStem` and `doFollow` flags from respective `classNames` entries.
      @doStem = @classNames.stem isnt ''
      @doFollow = @classNames.follow isnt ''
      # - Initialize state, which is either: `awake`, `asleep`, `waking`,
      # `sleeping`; respectively show, hide.
      @_setState 'asleep'
      # - The tip should remain visible and `awake` as long as there is a high
      # enough frequency of relevant mouse activity. In addition to using
      # `hoverIntent`, this is achieved with a simple base implementation around
      # timers `_sleepCountdown` and `_wakeCountdown` and an extra reference to
      # `_$currentTrigger`.
      @_wakeCountdown = null
      @_sleepCountdown = null
      @_$currentTrigger = null
      # - Initialize tip. Note the initial render.
      @_render()
      @_bind()
      # - Initialize context.
      @_bindContext()
      # - Initialize triggers. Note the initial processing.
      @_processTriggers()
      @_bindTriggers()

    # ### Accessors

    # ƒ `_defaultHtml` provides a basic html structure for tip content. It can be
    # customized via the `tipTemplate` external option, or by subclasses using
    # the `htmlOnRender` hook.
    _defaultHtml: ->

          clearTimeout @_sleepCountdown
          @_triggerChanged = yes

    # ___setTip__ aliases the conventional `$el` property to `$tip` for clarity.
    _setTip: ($tip) => @$tip = @$el = $tip

    # ___sizeForTrigger__ does a stealth render via `_wrapStealthRender` to find
    # tip size. It returns saved data if possible before doing a measure. The
    # measures, used by `_updateDirectionByTrigger`, are stored on the trigger
    # as namespaced, `width` and `height` jQuery data values. If on,
    # `contentOnly` will factor in content padding into the size value for the
