```coffeescript
Backbone.Factlink ||= {}

class Backbone.Factlink.CrossFadeRegion extends Backbone.Marionette.Region

  fadeIn: -> @$el?.stop().hide().fadeIn(@_fadeTime())

  fadeOut: (callback=->) -> @$el?.stop().fadeOut(@_fadeTime(), callback)

  crossFade: (newView) ->
    if @currentView
      @fadeOut => @show newView
    else
      @show(newView)

  open: (view) ->
    super(view)
    @fadeIn()

  resetFade: -> @fadeOut => @reset()

  _fadeTime: ->
    if @options?.fadeTime?
      @options.fadeTime
    else
      560

  onClose: -> @$el?.stop()
```

Call ensureEl instead of checking if @$el exists, otherwise behaviour is unexpected, e.g. callback may not be called
user
```coffeescript
Backbone.Factlink ||= {}

class Backbone.Factlink.CrossFadeRegion extends Backbone.Marionette.Region

  fadeIn: ->
    @ensureEl()
    @$el.stop().hide().fadeIn(@_fadeTime())

  fadeOut: (callback=->) ->
    @ensureEl()
    @$el.stop().fadeOut(@_fadeTime(), callback)

  crossFade: (newView) ->
    if @currentView
      @fadeOut => @show newView
    else
      @show(newView)

  open: (view) ->
    super(view)
    @fadeIn()

  resetFade: -> @fadeOut => @reset()

  _fadeTime: ->
    if @options?.fadeTime?
      @options.fadeTime
    else
      560

  onClose: -> @$el?.stop()
```
assistant