 				else
 					throw new Error("setTimeout function not set")
 
-			@_cancel = opts.canel or (sendid) ->
+			@_cancel = opts.cancel or (sendid) ->
 				if @opts.clearTimeout
 					if sendid of @_timeoutMap
 						if @opts.printTrace then logger.trace "cancelling ",sendid," with timeout id ",@_timeoutMap[sendid]

			#set up send and cancel
			#these may be passed in as options if, e.g., we 're using an external communication layer
			#these are the defaults if an external communication layer is not being used.
			@_send = opts.send or (target,event,caller,options) ->
				if @opts.setTimeout
					if @opts.printTrace then logger.trace "sending event",event.name,"with content",event.data,"after delay",options.delay


					log = @_eval action,datamodelForNextStep,eventSet
					if @opts.printTrace then logger.info(log)	#the one place where we use straight logger.info
				when "send"
					data = if action.contentexpr then @_eval(action,datamodelForNextStep,eventSet) else null
					if @_send then @_send(
						{
							target : action.target
							name : action.event
							data : data	#TODO: handle namelist,content,params
						},
						{
							delay : action.delay
							sendId : action.id
