anchor.diff:                                                                RESPONSE2,
                                                                 DEFAULT]}];
   % IVR with a repeat
  -recipy2(10) ->
  +recipe2(10) ->
       % get yer bits sorted out
       SAY1 = #say{text = "My you are looking swish"},
       RESPONSE1 = #response_EXT{title = "Praise", response = "1", body = [SAY1]},
  
positive.code:     end.
  
  % say something
  recipy2(1) ->
      [#say{text = "yowza"}];
  
  % say a couple of things and change the voice
  recipy2(2) ->
      [#say{text = "bonza, dogface", language = "fr", voice = "woman"},
       #say{text = "now piss aff!"}];
  
  % send an SMS message
  recipy2(3) ->
      [#say{text = "gonnae send someone an SMS"},
       #sms{text = "howdy", to = ?MYPHONE, from = ?PhoneNo}];
  
  % pregnant pause
  recipy2(4) ->
      [#say{text = "hot diggity", language = "de", voice = "woman"},
       #pause{length = 10}, #say{text = "lover boy!", voice= "woman"}];
  
  % play a file
  recipy2(5) ->
      [#play{url = "http://files.hypernumbers.com/music/"
             ++ "RockyMountainMedleyPart1.mp3"}];
  
  % forward a call
  recipy2(6) ->
      [#say{text = "forwarding to someone"},
       #dial{body = [#number{number = ?MYPHONE}]}];
  
  % primitive conference call
  recipy2(7) ->
      [#say{text="welcome to a simple conference call. "
            ++ "Have someone else call this number"},
       #dial{body = [#conference{muted = false, beep = true,
  
negative.code:     recipe(N).
  
  recipe(N) ->
      TwiML = recipe2(N),
      case twiml:is_valid(TwiML) of
          false -> io:format("Invalid TwiML ~p~n", [TwiML]),
                   exit("invalid TwiML");
  