diff --git a/apiclient/discovery.py b/apiclient/discovery.py
index 9f908de..b307a53 100644
--- a/apiclient/discovery.py
+++ b/apiclient/discovery.py
@@ -164,7 +164,8 @@
     auth_discovery = {}
 
   if model is None:
-    model = JsonModel('dataWrapper' in service.get('features', ['dataWrapper']))
+    features = service.get('features', ['dataWrapper'])
+    model = JsonModel('dataWrapper' in features)
   resource = createResource(http, base, model, requestBuilder, developerKey,
                        service, future)
 
@@ -217,7 +218,6 @@
 
   def createMethod(theclass, methodName, methodDesc, futureDesc):
     pathUrl = methodDesc['restPath']
-    pathUrl = re.sub(r'\{', r'{+', pathUrl)
     httpMethod = methodDesc['httpMethod']
     methodId = methodDesc['rpcMethod']
 
diff --git a/samples/prediction/main.py b/samples/prediction/main.py
new file mode 100644
index 0000000..5ae8d36
--- /dev/null
+++ b/samples/prediction/main.py
@@ -0,0 +1,79 @@
+#!/usr/bin/python2.4
+#
+# -*- coding: utf-8 -*-
+#
+# Copyright 2011 Google Inc. All Rights Reserved.
+
+"""Simple command-line example for Google Prediction API.
+
+Command-line application that trains on some data. This
+sample does the same thing as the Hello Prediction! example.
+
+  http://code.google.com/apis/predict/docs/hello_world.html
+"""
+
+__author__ = 'jcgregorio@google.com (Joe Gregorio)'
+
+import httplib2
+import pprint
+import time
+
+from apiclient.discovery import build
+from oauth2client.client import OAuth2WebServerFlow
+from oauth2client.file import Storage
+from oauth2client.tools import run
+
+# Uncomment to get low level HTTP logging
+#httplib2.debuglevel = 4
+
+# Name of Google Storage bucket/object that contains the training data
+OBJECT_NAME = "apiclient-prediction-sample/prediction_models/languages"
+
+
+def main():
+  storage = Storage('prediction.dat')
+  credentials = storage.get()
+
+  if credentials is None or credentials.invalid == True:
+    flow = OAuth2WebServerFlow(
+        # You MUST put in your client id and secret here for this sample to
+        # work. Visit https://code.google.com/apis/console to get your client
+        # credentials.
+        client_id='<Put Your Client ID Here>',
+        client_secret='<Put Your Client Secret Here>',
+        scope='https://www.googleapis.com/auth/prediction',
+        user_agent='prediction-cmdline-sample/1.0',
+        xoauth_displayname='Prediction Example App')
+
+    credentials = run(flow, storage)
+
+  http = httplib2.Http()
+  http = credentials.authorize(http)
+
+  service = build("prediction", "v1.1", http=http)
+
+  # Start training on a data set
+  train = service.training()
+  start = train.insert(data=OBJECT_NAME, body={}).execute()
+
+  print 'Started training'
+  pprint.pprint(start)
+
+  # Wait for the training to complete
+  while 1:
+    status = train.get(data=OBJECT_NAME).execute()
+    pprint.pprint(status)
+    if 'accuracy' in status['modelinfo']:
+      break
+    print 'Waiting for training to complete.'
+    time.sleep(10)
+  print 'Training is complete'
+
+  # Now make a prediction using that training
+  body = {'input': {'mixture':["mucho bueno"]}}
+  prediction = service.predict(body=body, data=OBJECT_NAME).execute()
+  print 'The prediction is:'
+  pprint.pprint(prediction)
+
+if __name__ == '__main__':
+  main()
diff --git a/samples/prediction/setup.sh b/samples/prediction/setup.sh
new file mode 100755
index 0000000..bc4aaf4
--- /dev/null
+++ b/samples/prediction/setup.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+#
+# Copyright 2011 Google Inc. All Rights Reserved.
+# Author: jcgregorio@google.com (Joe Gregorio)
+#
+# Uploads a training data set to Google Storage to be used by this sample
+# application. Download the 'language.txt' file from
+# http://code.google.com/apis/predict/docs/hello_world.html
+#
+# Requirements:
+#   gsutil - a client application for interacting with Google Storage. It
+#     can be downloaded from https://code.google.com/apis/storage/docs/gsutil.html
+gsutil cp ./language_id.txt gs://apiclient-prediction-sample/prediction_models/languages
diff --git a/uritemplate/__init__.py b/uritemplate/__init__.py
index b447447..5d0ebce 100644
--- a/uritemplate/__init__.py
+++ b/uritemplate/__init__.py
@@ -56,7 +56,7 @@
   varprefix = ""
   if operator == "?":
     joiner = "&"
-    varprefix = varname + "=" 
+    varprefix = varname + "="
   if type(value) == type([]):
     if 0 == len(value):
       return ""
@@ -101,7 +101,7 @@
       operator = ''
     varlist = groupdict.get('varlist')
 
-    safe = ""
+    safe = "@"
     if operator == '+':
       safe = RESERVED
     varspecs = varlist.split(",")
