       when 'string'
         if desc.indexOf('.') is 0
           @noSpaceBeforeDescription = true
-          subject = @subject?[desc.replace '.', '']
           @ownSubjectBlock = => subject
+          owner = @subject
+          subject = owner?[desc.replace '.', '']
+          subject = subject.bind(owner) if typeof subject is 'function'
         else if desc.indexOf('::') is 0
           @noSpaceBeforeDescription = true
           subject = @subjectBlock?()::[desc[1..-1]]


spectacular.withParameters = (args...) ->
  notInsideIt 'withParameters'

spectacular.should = (matcher, neg=false) ->
  notOutsideIt 'should'

    @ownBeforeHooks = []
    @ownAfterHooks = []

  @getter 'subject', -> @subjectBlock?.call(this)

  pending: ->
    if @promise?.pending
