[Telepathy-commits] [telepathy-glib/master] Update to spec 0.17.10

Simon McVittie simon.mcvittie at collabora.co.uk
Wed Sep 10 05:54:01 PDT 2008


---
 docs/reference/telepathy-glib-sections.txt    |    3 +
 spec/Account.xml                              |   51 +++++---
 spec/Account_Interface_Avatar.xml             |    2 +-
 spec/Account_Manager.xml                      |   25 +++-
 spec/Channel.xml                              |   45 +++++--
 spec/Channel_Bundle.xml                       |    4 +-
 spec/Channel_Future.xml                       |   18 ++-
 spec/Channel_Handler.xml                      |    2 +-
 spec/Channel_Interface_Call_Merging.xml       |    4 +-
 spec/Channel_Interface_Call_State.xml         |    8 +-
 spec/Channel_Interface_Chat_State.xml         |   10 +-
 spec/Channel_Interface_DTMF.xml               |   10 +-
 spec/Channel_Interface_Delivery_Reporting.xml |    6 +-
 spec/Channel_Interface_Group.xml              |   86 ++++++-----
 spec/Channel_Interface_Hold.xml               |    6 +-
 spec/Channel_Interface_Media_Signalling.xml   |    5 +-
 spec/Channel_Interface_Messages.xml           |   25 ++--
 spec/Channel_Interface_Password.xml           |   13 +-
 spec/Channel_Interface_Transfer.xml           |    4 +-
 spec/Channel_Type_Contact_Search.xml          |   18 ++-
 spec/Channel_Type_Room_List.xml               |   17 ++-
 spec/Channel_Type_Streamed_Media.xml          |   55 ++++----
 spec/Channel_Type_Text.xml                    |   88 +++++++++----
 spec/Channel_Type_Tubes.xml                   |  107 ++++++++-------
 spec/Connection.xml                           |  186 +++++++++++++++++++------
 spec/Connection_Interface_Aliasing.xml        |   18 ++--
 spec/Connection_Interface_Avatars.xml         |   44 +++---
 spec/Connection_Interface_Capabilities.xml    |   16 ++-
 spec/Connection_Interface_Contact_Info.xml    |   11 +-
 spec/Connection_Interface_Contacts.xml        |    6 +-
 spec/Connection_Interface_Forwarding.xml      |   12 +-
 spec/Connection_Interface_Presence.xml        |   37 +++---
 spec/Connection_Interface_Privacy.xml         |   13 +-
 spec/Connection_Interface_Renaming.xml        |   10 +-
 spec/Connection_Interface_Requests.xml        |   13 +-
 spec/Connection_Interface_Simple_Presence.xml |   22 ++--
 spec/Connection_Manager.xml                   |   66 +++------
 spec/Media_Session_Handler.xml                |   19 ++--
 spec/Media_Stream_Handler.xml                 |   95 +++++++------
 spec/Properties_Interface.xml                 |   23 ++--
 spec/all.xml                                  |    2 +-
 spec/generic-types.xml                        |   25 +++-
 42 files changed, 735 insertions(+), 495 deletions(-)

diff --git a/docs/reference/telepathy-glib-sections.txt b/docs/reference/telepathy-glib-sections.txt
index 8b60806..8e1790e 100644
--- a/docs/reference/telepathy-glib-sections.txt
+++ b/docs/reference/telepathy-glib-sections.txt
@@ -597,6 +597,7 @@ tp_svc_connection_request_handles_impl
 tp_svc_connection_implement_request_handles
 tp_svc_connection_return_from_request_handles
 tp_svc_connection_emit_new_channel
+tp_svc_connection_emit_self_handle_changed
 tp_svc_connection_emit_status_changed
 <SUBSECTION Standard>
 TP_SVC_CONNECTION
@@ -2015,6 +2016,8 @@ tp_cli_connection_call_request_handles
 tp_cli_connection_run_request_handles
 tp_cli_connection_signal_callback_new_channel
 tp_cli_connection_connect_to_new_channel
+tp_cli_connection_signal_callback_self_handle_changed
+tp_cli_connection_connect_to_self_handle_changed
 tp_cli_connection_signal_callback_status_changed
 tp_cli_connection_connect_to_status_changed
 </SECTION>
diff --git a/spec/Account.xml b/spec/Account.xml
index 86ff675..4c32498 100644
--- a/spec/Account.xml
+++ b/spec/Account.xml
@@ -104,20 +104,21 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       are the ones given special status by the source, and we have all of them
     -->
 
-    <property name="Interfaces" type="as" access="read">
+    <property name="Interfaces" tp:name-for-bindings="Interfaces"
+      type="as" tp:type="DBus_Interface[]" access="read">
       <tp:docstring>
         A list of the extra interfaces provided by this account.
       </tp:docstring>
     </property>
 
-    <method name="Remove">
+    <method name="Remove" tp:name-for-bindings="Remove">
       <tp:docstring>Delete the account.</tp:docstring>
       <tp:possible-errors>
         <tp:error name="org.freedesktop.Telepathy.Error.PermissionDenied"/>
       </tp:possible-errors>
     </method>
 
-    <signal name="Removed">
+    <signal name="Removed" tp:name-for-bindings="Removed">
       <tp:docstring>
         This account has been removed.
 
@@ -130,7 +131,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:docstring>
     </signal>
 
-    <signal name="AccountPropertyChanged">
+    <signal name="AccountPropertyChanged"
+      tp:name-for-bindings="Account_Property_Changed">
       <tp:docstring>
         The values of one or more properties on this interface (that do not
         specify that this signal does not apply to them) may have changed.
@@ -147,7 +149,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </arg>
     </signal>
 
-    <property name="DisplayName" type="s" access="readwrite">
+    <property name="DisplayName" type="s" access="readwrite"
+      tp:name-for-bindings="Display_Name">
       <tp:docstring>
         The user-visible name of this account. This SHOULD be chosen by the
         user at account creation time. The account creation user interface
@@ -161,7 +164,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:docstring>
     </property>
 
-    <property name="Icon" type="s" access="readwrite">
+    <property name="Icon" tp:name-for-bindings="Icon"
+      type="s" access="readwrite">
       <tp:docstring>
         The name of an icon in the system's icon theme, such as "im-msn",
         or the empty string to not specify an icon. If the icon is set to
@@ -177,7 +181,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:docstring>
     </property>
 
-    <property name="Valid" type="b" access="read">
+    <property name="Valid" tp:name-for-bindings="Valid"
+      type="b" access="read">
       <tp:docstring>
         If true, this account is considered by the account manager to be
         complete and usable. If false, user action is required to make it
@@ -196,7 +201,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:docstring>
     </property>
 
-    <property name="Enabled" type="b" access="readwrite">
+    <property name="Enabled" tp:name-for-bindings="Enabled"
+      type="b" access="readwrite">
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>This property gives the users the possibility to prevent an account
           from being used. This flag does not change the validity of the
@@ -229,7 +235,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:docstring>
     </property>
 
-    <property name="Nickname" type="as" access="readwrite">
+    <property name="Nickname" tp:name-for-bindings="Nickname"
+      type="as" access="readwrite">
       <tp:docstring>
         The nickname to set on this account for display to other contacts,
         as set by the user. When the account becomes connected, the
@@ -247,7 +254,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:docstring>
     </property>
 
-    <property name="Parameters" type="a{sv}" access="read">
+    <property name="Parameters" tp:name-for-bindings="Parameters"
+      type="a{sv}" access="read">
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>A map from connection manager parameter names (as in the
           ConnectionManager interface) to their values. This property includes
@@ -263,7 +271,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:docstring>
     </property>
 
-    <method name="UpdateParameters">
+    <method name="UpdateParameters" tp:name-for-bindings="Update_Parameters">
       <tp:docstring>
         Change the value of the Parameters property. Any changes will not
         take effect until the next time the account is disconnected and
@@ -299,7 +307,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
     </method>
 
     <property name="AutomaticPresence" type="(uss)" access="readwrite"
-      tp:type="Simple_Presence">
+      tp:type="Simple_Presence" tp:name-for-bindings="Automatic_Presence">
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>The presence status that this account should have if it is brought
           online.</p>
@@ -318,7 +326,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:docstring>
     </property>
 
-    <property name="ConnectAutomatically" type="b" access="readwrite">
+    <property name="ConnectAutomatically" type="b" access="readwrite"
+      tp:name-for-bindings="Connect_Automatically">
       <tp:docstring>
         If true, the account manager SHOULD attempt to put this account
         online with the AutomaticPresence whenever possible (in the base
@@ -336,14 +345,16 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:docstring>
     </property>
 
-    <property name="Connection" type="s" access="read">
+    <property name="Connection" tp:name-for-bindings="Connection"
+      type="s" access="read">
       <tp:docstring>
         Either the well-known bus name of the connection to this account,
         or the empty string if there is no connection.
       </tp:docstring>
     </property>
 
-    <property name="ConnectionStatus" type="u" access="read">
+    <property name="ConnectionStatus" type="u" access="read"
+      tp:name-for-bindings="Connection_Status">
       <tp:docstring>
         If the Connection property is non-empty, the status of that connection.
         If the Connection property is the empty string, this property may
@@ -362,7 +373,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:docstring>
     </property>
 
-    <property name="ConnectionStatusReason" type="u" access="read">
+    <property name="ConnectionStatusReason" type="u" access="read"
+      tp:name-for-bindings="Connection_Status_Reason">
       <tp:docstring>
         The reason for the last change to ConnectionStatus.
         The account manager is expected to set this by observing signals
@@ -377,7 +389,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
     </property>
 
     <property name="CurrentPresence" type="(uss)" access="read"
-      tp:type="Simple_Presence">
+      tp:type="Simple_Presence" tp:name-for-bindings="Current_Presence">
       <tp:docstring>
         The actual presence. If the connection is not online, this should be
         (Connection_Presence_Type_Offline, "", "").
@@ -393,7 +405,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
     </property>
 
     <property name="RequestedPresence" type="(uss)" access="readwrite"
-      tp:type="Simple_Presence">
+      tp:type="Simple_Presence" tp:name-for-bindings="Requested_Presence">
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>The requested presence for this account. When this is changed, the
           account manager should attempt to manipulate the connection manager
@@ -412,7 +424,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:docstring>
     </property>
 
-    <property name="NormalizedName" type="s" access="read">
+    <property name="NormalizedName" type="s" access="read"
+      tp:name-for-bindings="Normalized_Name">
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>The normalized user ID of the local user on this account (i.e. the
           string returned when the InspectHandle method is called on the
diff --git a/spec/Account_Interface_Avatar.xml b/spec/Account_Interface_Avatar.xml
index cb58256..4ffb8f5 100644
--- a/spec/Account_Interface_Avatar.xml
+++ b/spec/Account_Interface_Avatar.xml
@@ -50,7 +50,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:docstring>
     </property>
 
-    <signal name="AvatarChanged">
+    <signal name="AvatarChanged" tp:name-for-bindings="Avatar_Changed">
       <tp:docstring>
         Emitted when the Avatar property changes.
         
diff --git a/spec/Account_Manager.xml b/spec/Account_Manager.xml
index a068da3..b92913e 100644
--- a/spec/Account_Manager.xml
+++ b/spec/Account_Manager.xml
@@ -29,6 +29,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
         the session bus. This process must export an
         /org/freedesktop/Telepathy/AccountManager object with the
         AccountManager interface.</p>
+
+      <p>Until a mechanism exists for making a reasonable automatic choice
+        of AccountManager implementation, implementations SHOULD NOT
+        register as an activatable service for the AccountManager's
+        well-known bus name. Instead, it is RECOMMENDED that some component
+        of the user's session will select and activate a particular
+        implementation, and that other Telepathy-enabled programs can
+        detect whether Telepathy is in use by checking whether the
+        AccountManager's well-known name is in use at runtime.</p>
     </tp:docstring>
     <tp:added version="0.17.2"/>
 
@@ -43,13 +52,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
     * register filters (completely out of scope: Channel Dispatcher again)
     -->
 
-    <property name="Interfaces" type="as" access="read">
+    <property name="Interfaces" tp:name-for-bindings="Interfaces"
+      type="as" tp:type="DBus_Interface[]" access="read">
       <tp:docstring>
         A list of the interfaces provided by the account manager object.
       </tp:docstring>
     </property>
 
-    <property name="ValidAccounts" type="ao" access="read">
+    <property name="ValidAccounts" type="ao" access="read"
+      tp:name-for-bindings="Valid_Accounts">
       <tp:docstring>
         A list of the valid (complete, usable) accounts. Change notification
         is via AccountValidityChanged.
@@ -63,14 +74,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:docstring>
     </property>
 
-    <property name="InvalidAccounts" type="ao" access="read">
+    <property name="InvalidAccounts" type="ao" access="read"
+      tp:name-for-bindings="Invalid_Accounts">
       <tp:docstring>
         A list of incomplete or otherwise unusable accounts. Change
         notification is via AccountValidityChanged.
       </tp:docstring>
     </property>
 
-    <signal name="AccountRemoved">
+    <signal name="AccountRemoved" tp:name-for-bindings="Account_Removed">
       <tp:docstring>
         The given account has been removed.
 
@@ -87,7 +99,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </arg>
     </signal>
 
-    <signal name="AccountValidityChanged">
+    <signal name="AccountValidityChanged"
+      tp:name-for-bindings="Account_Validity_Changed">
       <tp:docstring>
         The validity of the given account has changed. New accounts are
         also indicated by this signal, as an account validity change
@@ -112,7 +125,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </arg>
     </signal>
 
-    <method name="CreateAccount">
+    <method name="CreateAccount" tp:name-for-bindings="Create_Account">
       <tp:docstring>
         Request the creation of a new account. The account manager SHOULD NOT
         allow invalid accounts to be created. Accounts created through this
diff --git a/spec/Channel.xml b/spec/Channel.xml
index b9b8f3b..545e84c 100644
--- a/spec/Channel.xml
+++ b/spec/Channel.xml
@@ -21,7 +21,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
   <interface name="org.freedesktop.Telepathy.Channel">
 
     <property name="ChannelType" type="s" tp:type="DBus_Interface"
-      access="read">
+      access="read" tp:name-for-bindings="Channel_Type">
       <tp:added version="0.17.7"/>
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>The channel's type. This cannot change once the channel has
@@ -46,8 +46,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </property>
 
-    <property name="Interfaces" type="as" tp:type="DBus_Interface[]"
-      access="read">
+    <property name="Interfaces" tp:name-for-bindings="Interfaces"
+      type="as" tp:type="DBus_Interface[]" access="read">
       <tp:added version="0.17.7"/>
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>Extra interfaces provided by this channel. This SHOULD NOT include
@@ -75,7 +75,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </property>
 
-    <property name="TargetHandle" type="u" access="read" tp:type="Handle">
+    <property name="TargetHandle" type="u" access="read" tp:type="Handle"
+      tp:name-for-bindings="Target_Handle">
       <tp:added version="0.17.7"/>
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>The handle (a representation for the identifier) of the contact,
@@ -112,7 +113,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </property>
 
-    <property name="TargetID" type="s" access="read">
+    <property name="TargetID" tp:name-for-bindings="Target_ID"
+      type="s" access="read">
       <tp:added version="0.17.9"/>
 
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
@@ -158,7 +160,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
     </property>
 
     <property name="TargetHandleType" type="u" access="read"
-      tp:type="Handle_Type">
+      tp:type="Handle_Type" tp:name-for-bindings="Target_Handle_Type">
       <tp:added version="0.17.7"/>
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>The type of TargetHandle.</p>
@@ -173,7 +175,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </property>
 
-    <method name="Close">
+    <method name="Close" tp:name-for-bindings="Close">
       <tp:docstring>
         Request that the channel be closed. This is not the case until
         the Closed signal has been emitted, and depending on the connection
@@ -198,7 +200,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:possible-errors>
     </method>
 
-    <signal name="Closed">
+    <signal name="Closed" tp:name-for-bindings="Closed">
       <tp:docstring>
         Emitted when the channel has been closed. Method calls on the
         channel are no longer valid after this signal has been emitted,
@@ -207,7 +209,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </signal>
 
-    <method name="GetChannelType">
+    <method name="GetChannelType" tp:name-for-bindings="Get_Channel_Type">
       <tp:deprecated version="0.17.7">Use the ChannelType
         property if possible.</tp:deprecated>
       <arg direction="out" type="s" tp:type="DBus_Interface">
@@ -225,7 +227,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </method>
 
-    <method name="GetHandle">
+    <method name="GetHandle" tp:name-for-bindings="Get_Handle">
       <tp:deprecated version="0.17.7">Use the TargetHandleType
         and TargetHandle properties if possible.</tp:deprecated>
       <arg direction="out" type="u" tp:type="Handle_Type">
@@ -252,7 +254,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </method>
 
-    <method name="GetInterfaces">
+    <method name="GetInterfaces" tp:name-for-bindings="Get_Interfaces">
       <tp:deprecated version="0.17.7">Use the Interfaces
         property if possible.</tp:deprecated>
       <arg direction="out" type="as" tp:type="DBus_Interface[]">
@@ -280,6 +282,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
     as a buddy list) or a Channel.Type.Text which represents a channel over
     which textual messages are sent and received.</p>
 
+    <p>Each Channel's object path MUST start with the object path of
+      its associated Connection, followed by '/'. There MAY be any number
+      of additional object-path components, which clients MUST NOT attempt
+      to parse.</p>
+
+    <tp:rationale>
+      <p>This ensures that Channel object paths are unique, even between
+        Connections and CMs, because Connection object paths are
+        guaranteed-unique via their link to the well-known bus name.</p>
+
+      <p>If all connection managers in use are known to comply with at least
+        spec version 0.17.10, then the Connection's object path can
+        even be determined from the Channel's without any additional
+        information, by taking the first 7 components.</p>
+    </tp:rationale>
+
     <p>Each channel may have an immutable handle associated with it, which
       may be any handle type, such as a contact, room or list handle,
       indicating that the channel is for communicating with that handle.</p>
@@ -316,6 +334,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       has now been removed in order to accommodate features like message
       threads.
     </tp:changed>
+
+    <tp:changed version="0.17.10">Previously we did not explicitly
+      guarantee that Channels' object paths had the Connection's object path
+      as a prefix.
+    </tp:changed>
   </interface>
 </node>
 <!-- vim:set sw=2 sts=2 et ft=xml: -->
diff --git a/spec/Channel_Bundle.xml b/spec/Channel_Bundle.xml
index 0b1a6c1..d211525 100644
--- a/spec/Channel_Bundle.xml
+++ b/spec/Channel_Bundle.xml
@@ -36,8 +36,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
         exist, the bundle <em>B</em> will also exist.</p>
     </tp:docstring>
 
-    <property name="Interfaces" type="as" access="read"
-      tp:type="DBus_Interface[]">
+    <property name="Interfaces" tp:name-for-bindings="Interfaces"
+      type="as" access="read" tp:type="DBus_Interface[]">
       <tp:docstring>
         A list of the extra interfaces provided by this channel bundle.
       </tp:docstring>
diff --git a/spec/Channel_Future.xml b/spec/Channel_Future.xml
index ad18879..7e90702 100644
--- a/spec/Channel_Future.xml
+++ b/spec/Channel_Future.xml
@@ -42,7 +42,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:rationale>
     </tp:docstring>
 
-    <property name="Requested" type="b" access="read">
+    <property name="Requested" tp:name-for-bindings="Requested"
+      type="b" access="read">
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>True if this channel was created in response to a call to
           <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.RequestChannel</tp:dbus-ref>,
@@ -99,14 +100,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
     </property>
 
     <property name="InitiatorHandle" type="u" tp:type="Contact_Handle"
-      access="read">
+      access="read" tp:name-for-bindings="Initiator_Handle">
       <tp:added version="0.17.7">(in Channel.FUTURE
         pseudo-interface)</tp:added>
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>The contact who initiated the channel. For channels requested by the
-          local user, this MUST be the same thing as would be returned
-          by Connection.GetSelfHandle() at the time the channel was
-          created.</p>
+          local user, this MUST be the value of
+          <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.SelfHandle</tp:dbus-ref>
+          at the time the channel was created (i.e. not a channel-specific
+          handle).</p>
 
         <tp:rationale>
           <p>The careful wording about the self-handle is because the Renaming
@@ -133,7 +135,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </property>
 
-    <property name="InitiatorID" type="s" access="read">
+    <property name="InitiatorID" type="s" access="read"
+      tp:name-for-bindings="Initiator_ID">
       <tp:added version="0.17.7">(in Channel.FUTURE
         pseudo-interface)</tp:added>
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
@@ -161,7 +164,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </property>
 
-    <property name="Bundle" type="o" access="read">
+    <property name="Bundle" tp:name-for-bindings="Bundle"
+      type="o" access="read">
       <tp:added version="0.17.9">(in Channel.FUTURE
         pseudo-interface)</tp:added>
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
diff --git a/spec/Channel_Handler.xml b/spec/Channel_Handler.xml
index 06b14e8..e942839 100644
--- a/spec/Channel_Handler.xml
+++ b/spec/Channel_Handler.xml
@@ -24,7 +24,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
     </tp:docstring>
     <tp:added version="0.17.0"/>
 
-    <method name="HandleChannel">
+    <method name="HandleChannel" tp:name-for-bindings="Handle_Channel">
       <tp:docstring>
         Called when a channel handler should handle a new channel.
       </tp:docstring>
diff --git a/spec/Channel_Interface_Call_Merging.xml b/spec/Channel_Interface_Call_Merging.xml
index 23f9558..a98daf1 100644
--- a/spec/Channel_Interface_Call_Merging.xml
+++ b/spec/Channel_Interface_Call_Merging.xml
@@ -29,7 +29,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
         in the same sort of way as in GSM or PBX telephony.</p>
     </tp:docstring>
 
-    <method name="Merge">
+    <method name="Merge" tp:name-for-bindings="Merge">
       <arg direction="in" type="o" name="Other">
         <tp:docstring>
           The other channel to merge into this one
@@ -49,7 +49,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:possible-errors>
     </method>
 
-    <method name="Split">
+    <method name="Split" tp:name-for-bindings="Split">
       <arg direction="in" name="Contact" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           The handle of the contact to split off a conversation with, who
diff --git a/spec/Channel_Interface_Call_State.xml b/spec/Channel_Interface_Call_State.xml
index aead16b..132137e 100644
--- a/spec/Channel_Interface_Call_State.xml
+++ b/spec/Channel_Interface_Call_State.xml
@@ -29,7 +29,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
     </tp:docstring>
     <tp:added version="0.17.2"/>
 
-    <method name="GetCallStates">
+    <method name="GetCallStates" tp:name-for-bindings="Get_Call_States">
       <tp:docstring>
         Get the current call states for all contacts involved in this call.
       </tp:docstring>
@@ -43,18 +43,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </arg>
     </method>
 
-    <signal name="CallStateChanged">
+    <signal name="CallStateChanged" tp:name-for-bindings="Call_State_Changed">
       <tp:docstring>
         Emitted when the state of a member of the channel has changed.
       </tp:docstring>
 
-      <arg name="contact" type="u" tp:type="Contact_Handle">
+      <arg name="Contact" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           An integer handle for the contact.
         </tp:docstring>
       </arg>
 
-      <arg name="state" type="u" tp:type="Channel_Call_State_Flags">
+      <arg name="State" type="u" tp:type="Channel_Call_State_Flags">
         <tp:docstring>
           The new state for this contact.
         </tp:docstring>
diff --git a/spec/Channel_Interface_Chat_State.xml b/spec/Channel_Interface_Chat_State.xml
index 9cc6883..aa29236 100644
--- a/spec/Channel_Interface_Chat_State.xml
+++ b/spec/Channel_Interface_Chat_State.xml
@@ -18,8 +18,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
   </tp:license>
   <interface name="org.freedesktop.Telepathy.Channel.Interface.ChatState">
     <tp:requires interface="org.freedesktop.Telepathy.Channel"/>
-    <method name="SetChatState">
-      <arg direction="in" name="state" type="u" tp:type="Channel_Chat_State">
+    <method name="SetChatState" tp:name-for-bindings="Set_Chat_State">
+      <arg direction="in" name="State" type="u" tp:type="Channel_Chat_State">
         <tp:docstring>
           The new state: one of the values of ChannelChatState.
         </tp:docstring>
@@ -34,13 +34,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.InvalidArgument"/>
       </tp:possible-errors>
     </method>
-    <signal name="ChatStateChanged">
-      <arg name="contact" type="u" tp:type="Contact_Handle">
+    <signal name="ChatStateChanged" tp:name-for-bindings="Chat_State_Changed">
+      <arg name="Contact" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           An integer handle for the contact.
         </tp:docstring>
       </arg>
-      <arg name="state" type="u" tp:type="Channel_Chat_State">
+      <arg name="State" type="u" tp:type="Channel_Chat_State">
         <tp:docstring>
           The new state of this contact: one of the values of ChannelChatState.
         </tp:docstring>
diff --git a/spec/Channel_Interface_DTMF.xml b/spec/Channel_Interface_DTMF.xml
index c24ec11..8abb8dc 100644
--- a/spec/Channel_Interface_DTMF.xml
+++ b/spec/Channel_Interface_DTMF.xml
@@ -21,11 +21,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
   <interface name="org.freedesktop.Telepathy.Channel.Interface.DTMF">
     <tp:requires interface="org.freedesktop.Telepathy.Channel.Type.StreamedMedia"/>
 
-    <method name="StartTone">
-      <arg direction="in" name="stream_id" type="u" tp:type="Stream_ID">
+    <method name="StartTone" tp:name-for-bindings="Start_Tone">
+      <arg direction="in" name="Stream_ID" type="u" tp:type="Stream_ID">
         <tp:docstring>A stream ID as defined in the StreamedMedia channel type.</tp:docstring>
       </arg>
-      <arg direction="in" name="event" type="y" tp:type="DTMF_Event">
+      <arg direction="in" name="Event" type="y" tp:type="DTMF_Event">
         <tp:docstring>A numeric event code from the DTMF_Event enum.</tp:docstring>
       </arg>
       <tp:docstring>
@@ -50,8 +50,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:possible-errors>
     </method>
 
-    <method name="StopTone">
-      <arg direction="in" name="stream_id" type="u" tp:type="Stream_ID">
+    <method name="StopTone" tp:name-for-bindings="Stop_Tone">
+      <arg direction="in" name="Stream_ID" type="u" tp:type="Stream_ID">
         <tp:docstring>A stream ID as defined in the StreamedMedia channel type.</tp:docstring>
       </arg>
       <tp:docstring>
diff --git a/spec/Channel_Interface_Delivery_Reporting.xml b/spec/Channel_Interface_Delivery_Reporting.xml
index 8d6f797..494b44d 100644
--- a/spec/Channel_Interface_Delivery_Reporting.xml
+++ b/spec/Channel_Interface_Delivery_Reporting.xml
@@ -354,13 +354,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
     </tp:flags>
 
     <property name="DeliveryReportingSupport" access="read"
-      tp:type="Delivery_Reporting_Support_Flags" type="u">
+      tp:type="Delivery_Reporting_Support_Flags" type="u"
+      tp:name-for-bindings="Delivery_Reporting_Support">
       <tp:docstring>
         A bitfield indicating features supported by this channel.
       </tp:docstring>
     </property>
 
-    <method name="SendDeliveryReport">
+    <method name="SendDeliveryReport"
+      tp:name-for-bindings="Send_Delivery_Report">
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>Request that a delivery report is sent for the specified pending
           incoming message. Delivery reports cannot currently be sent for
diff --git a/spec/Channel_Interface_Group.xml b/spec/Channel_Interface_Group.xml
index cab68c5..4e69b88 100644
--- a/spec/Channel_Interface_Group.xml
+++ b/spec/Channel_Interface_Group.xml
@@ -48,13 +48,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:member>
     </tp:struct>
 
-    <method name="AddMembers">
-      <arg direction="in" name="contacts" type="au" tp:type="Contact_Handle[]">
+    <method name="AddMembers" tp:name-for-bindings="Add_Members">
+      <arg direction="in" name="Contacts" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
           An array of contact handles to invite to the channel
         </tp:docstring>
       </arg>
-      <arg direction="in" name="message" type="s">
+      <arg direction="in" name="Message" type="s">
         <tp:docstring>
           A string message, which can be blank if desired
         </tp:docstring>
@@ -83,11 +83,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:possible-errors>
     </method>
 
-    <method name="GetAllMembers">
+    <method name="GetAllMembers" tp:name-for-bindings="Get_All_Members">
       <tp:deprecated version="0.17.6">Use GetAll on the D-Bus
         Properties D-Bus interface to get properties including Members,
         RemotePendingMembers and LocalPendingMembers instead, falling back to
-        this method and GetLocalPendingMembers if necessary.</tp:deprecated>
+        this method and GetLocalPendingMembersWithInfo if necessary.
+      </tp:deprecated>
 
       <arg direction="out" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
@@ -211,7 +212,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
     </tp:flags>
 
     <property name="GroupFlags" type="u" tp:type="Channel_Group_Flags"
-      access="read">
+      access="read" tp:name-for-bindings="Group_Flags">
       <tp:docstring>
         An integer representing the bitwise-OR of flags on this
         channel. The user interface can use this to present information about
@@ -223,7 +224,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         Channel_Group_Flag_Properties is not present.</tp:added>
     </property>
 
-    <method name="GetGroupFlags">
+    <method name="GetGroupFlags" tp:name-for-bindings="Get_Group_Flags">
       <arg direction="out" type="u" tp:type="Channel_Group_Flags">
         <tp:docstring>
           The value of the GroupFlags property
@@ -264,7 +265,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
     </tp:mapping>
 
     <property name="HandleOwners" type="a{uu}" tp:type="Handle_Owner_Map"
-      access="read">
+      access="read" tp:name-for-bindings="Handle_Owners">
       <tp:docstring>
         A map from channel-specific handles to their owners, including
         at least all of the channel-specific handles in this channel's members,
@@ -277,7 +278,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       <tp:added version="0.17.6"/>
     </property>
 
-    <signal name="HandleOwnersChanged">
+    <signal name="HandleOwnersChanged"
+      tp:name-for-bindings="Handle_Owners_Changed">
       <tp:docstring>
         Emitted whenever the HandleOwners property changes.
       </tp:docstring>
@@ -301,8 +303,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </arg>
     </signal>
 
-    <method name="GetHandleOwners">
-      <arg direction="in" name="handles" type="au" tp:type="Contact_Handle[]">
+    <method name="GetHandleOwners" tp:name-for-bindings="Get_Handle_Owners">
+      <arg direction="in" name="Handles" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
           A list of integer handles representing members of the channel
         </tp:docstring>
@@ -344,7 +346,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:possible-errors>
     </method>
 
-    <method name="GetLocalPendingMembers">
+    <method name="GetLocalPendingMembers"
+      tp:name-for-bindings="Get_Local_Pending_Members">
       <arg direction="out" type="au" tp:type="Contact_Handle[]"/>
       <tp:docstring>
         Returns the To_Be_Added handle (only) for each structure in the
@@ -358,7 +361,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:possible-errors>
     </method>
 
-    <method name="GetLocalPendingMembersWithInfo">
+    <method name="GetLocalPendingMembersWithInfo"
+      tp:name-for-bindings="Get_Local_Pending_Members_With_Info">
       <tp:added version="0.15.0" />
       <tp:docstring>
         Returns the LocalPendingMembers property.
@@ -394,7 +398,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
     </method>
 
     <property name="LocalPendingMembers" access="read"
-      type="a(uuus)" tp:type="Local_Pending_Info[]">
+      type="a(uuus)" tp:type="Local_Pending_Info[]"
+      tp:name-for-bindings="Local_Pending_Members">
       <tp:docstring>
         An array of structs containing handles representing contacts
         requesting channel membership and awaiting local approval with
@@ -406,7 +411,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         from that to the deprecated GetAllMembers method.</tp:added>
     </property>
 
-    <property name="Members" access="read" type="au" tp:type="Contact_Handle[]">
+    <property name="Members" tp:name-for-bindings="Members"
+      access="read" type="au" tp:type="Contact_Handle[]">
       <tp:docstring>
         The members of this channel.
       </tp:docstring>
@@ -414,7 +420,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         is not set, fall back to calling GetAllMembers.</tp:added>
     </property>
 
-    <method name="GetMembers">
+    <method name="GetMembers" tp:name-for-bindings="Get_Members">
       <arg direction="out" type="au" tp:type="Contact_Handle[]"/>
       <tp:docstring>
         Returns the Members property.
@@ -428,7 +434,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
     </method>
 
     <property name="RemotePendingMembers" access="read" type="au"
-      tp:type="Contact_Handle[]">
+      tp:type="Contact_Handle[]" tp:name-for-bindings="Remote_Pending_Members">
       <tp:docstring>
         An array of handles representing contacts who have been
         invited to the channel and are awaiting remote approval.
@@ -437,7 +443,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         is not set, fall back to calling GetAllMembers.</tp:added>
     </property>
 
-    <method name="GetRemotePendingMembers">
+    <method name="GetRemotePendingMembers"
+      tp:name-for-bindings="Get_Remote_Pending_Members">
       <arg direction="out" type="au" tp:type="Contact_Handle[]"/>
       <tp:docstring>
         Returns an array of handles representing contacts who have been
@@ -451,7 +458,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:possible-errors>
     </method>
 
-    <signal name="SelfHandleChanged">
+    <signal name="SelfHandleChanged" tp:name-for-bindings="Self_Handle_Changed">
       <tp:docstring>
         Emitted whenever the SelfHandle property changes.
       </tp:docstring>
@@ -466,7 +473,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
     </signal>
 
     <property name="SelfHandle" type="u" tp:type="Contact_Handle"
-      access="read">
+      access="read" tp:name-for-bindings="Self_Handle">
       <tp:docstring>
         The handle for the user on this channel (which can also be a
         local or remote pending member), or 0 if the user is not a member at
@@ -480,7 +487,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         Channel_Group_Flag_Properties is not present.</tp:added>
     </property>
 
-    <method name="GetSelfHandle">
+    <method name="GetSelfHandle" tp:name-for-bindings="Get_Self_Handle">
       <arg direction="out" type="u" tp:type="Contact_Handle"/>
       <tp:docstring>
         Returns the value of the SelfHandle property.
@@ -494,13 +501,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:possible-errors>
     </method>
 
-    <signal name="GroupFlagsChanged">
-      <arg name="added" type="u" tp:type="Channel_Group_Flags">
+    <signal name="GroupFlagsChanged" tp:name-for-bindings="Group_Flags_Changed">
+      <arg name="Added" type="u" tp:type="Channel_Group_Flags">
         <tp:docstring>
           A bitwise OR of the flags which have been set
         </tp:docstring>
       </arg>
-      <arg name="removed" type="u" tp:type="Channel_Group_Flags">
+      <arg name="Removed" type="u" tp:type="Channel_Group_Flags">
         <tp:docstring>
           A bitwise OR of the flags which have been cleared
         </tp:docstring>
@@ -599,39 +606,39 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:enumvalue>
     </tp:enum>
 
-    <signal name="MembersChanged">
-      <arg name="message" type="s">
+    <signal name="MembersChanged" tp:name-for-bindings="Members_Changed">
+      <arg name="Message" type="s">
         <tp:docstring>
           A string message from the server, or blank if not
         </tp:docstring>
       </arg>
-      <arg name="added" type="au" tp:type="Contact_Handle[]">
+      <arg name="Added" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
           A list of members added to the channel
         </tp:docstring>
       </arg>
-      <arg name="removed" type="au" tp:type="Contact_Handle[]">
+      <arg name="Removed" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
           A list of members removed from the channel
         </tp:docstring>
       </arg>
-      <arg name="local_pending" type="au" tp:type="Contact_Handle[]">
+      <arg name="Local_Pending" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
           A list of members who are pending local approval
         </tp:docstring>
       </arg>
-      <arg name="remote_pending" type="au" tp:type="Contact_Handle[]">
+      <arg name="Remote_Pending" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
           A list of members who are pending remote approval
         </tp:docstring>
       </arg>
-      <arg name="actor" type="u" tp:type="Contact_Handle">
+      <arg name="Actor" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           The contact handle of the person who made the change, or 0
           if not known
         </tp:docstring>
       </arg>
-      <arg name="reason" type="u" tp:type="Channel_Group_Change_Reason">
+      <arg name="Reason" type="u" tp:type="Channel_Group_Change_Reason">
         <tp:docstring>
           A reason for the change: one of the values of
           ChannelGroupChangeReason
@@ -653,13 +660,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </signal>
 
-    <method name="RemoveMembers">
-      <arg direction="in" name="contacts" type="au" tp:type="Contact_Handle[]">
+    <method name="RemoveMembers" tp:name-for-bindings="Remove_Members">
+      <arg direction="in" name="Contacts" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
           An array of contact handles to remove from the channel
         </tp:docstring>
       </arg>
-      <arg direction="in" name="message" type="s">
+      <arg direction="in" name="Message" type="s">
         <tp:docstring>
           A string message, which can be blank if desired
         </tp:docstring>
@@ -683,18 +690,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:possible-errors>
     </method>
 
-    <method name="RemoveMembersWithReason">
-      <arg direction="in" name="contacts" type="au" tp:type="Contact_Handle[]">
+    <method name="RemoveMembersWithReason"
+      tp:name-for-bindings="Remove_Members_With_Reason">
+      <arg direction="in" name="Contacts" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
           An array of contact handles to remove from the channel
         </tp:docstring>
       </arg>
-      <arg direction="in" name="message" type="s">
+      <arg direction="in" name="Message" type="s">
         <tp:docstring>
           A string message, which can be blank if desired
         </tp:docstring>
       </arg>
-      <arg direction="in" name="reason" type="u"
+      <arg direction="in" name="Reason" type="u"
            tp:type="Channel_Group_Change_Reason">
         <tp:docstring>
           A reason for the change: one of the values of
diff --git a/spec/Channel_Interface_Hold.xml b/spec/Channel_Interface_Hold.xml
index 8c5c33b..4d3cc4d 100644
--- a/spec/Channel_Interface_Hold.xml
+++ b/spec/Channel_Interface_Hold.xml
@@ -37,7 +37,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
         another call).</p>
     </tp:docstring>
 
-    <method name="GetHoldState">
+    <method name="GetHoldState" tp:name-for-bindings="Get_Hold_State">
       <tp:docstring>
         Return whether the local user has placed the channel on hold.
       </tp:docstring>
@@ -57,7 +57,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </arg>
     </method>
 
-    <signal name="HoldStateChanged">
+    <signal name="HoldStateChanged" tp:name-for-bindings="Hold_State_Changed">
       <tp:docstring>
         Emitted to indicate that the hold state has changed for this channel.
         This may occur as a consequence of you requesting a change with
@@ -140,7 +140,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:enumvalue>
     </tp:enum>
 
-    <method name="RequestHold">
+    <method name="RequestHold" tp:name-for-bindings="Request_Hold">
       <arg direction="in" name="Hold" type="b">
         <tp:docstring>
           A boolean indicating whether or not the channel should be on hold
diff --git a/spec/Channel_Interface_Media_Signalling.xml b/spec/Channel_Interface_Media_Signalling.xml
index cc7a7a9..aa39721 100644
--- a/spec/Channel_Interface_Media_Signalling.xml
+++ b/spec/Channel_Interface_Media_Signalling.xml
@@ -39,7 +39,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:member>
     </tp:struct>
 
-    <method name="GetSessionHandlers">
+    <method name="GetSessionHandlers"
+      tp:name-for-bindings="Get_Session_Handlers">
       <arg direction="out" type="a(os)" tp:type="Media_Session_Handler_Info[]"/>
       <tp:docstring>
         Returns all currently active session handlers on this channel
@@ -47,7 +48,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </method>
 
-    <signal name="NewSessionHandler">
+    <signal name="NewSessionHandler" tp:name-for-bindings="New_Session_Handler">
       <arg name="Session_Handler" type="o">
         <tp:docstring>
           Object path of the new MediaSessionHandler object
diff --git a/spec/Channel_Interface_Messages.xml b/spec/Channel_Interface_Messages.xml
index 7ba2f8e..232a199 100644
--- a/spec/Channel_Interface_Messages.xml
+++ b/spec/Channel_Interface_Messages.xml
@@ -61,7 +61,8 @@ USA.</p>
         (which are guaranteed to duplicate signals from this interface).</p>
     </tp:docstring>
 
-    <property name="SupportedContentTypes" type="as" access="read">
+    <property name="SupportedContentTypes" type="as" access="read"
+      tp:name-for-bindings="Supported_Content_Types">
       <tp:docstring>
         A list of MIME types supported by this channel, with more preferred
         MIME types appearing earlier in the list. The list MAY include "*/*"
@@ -72,8 +73,8 @@ USA.</p>
     </property>
 
     <property name="MessagePartSupportFlags" type="u"
-      tp:type="Message_Part_Support_Flags"
-      access="read">
+      tp:type="Message_Part_Support_Flags" access="read"
+      tp:name-for-bindings="Message_Part_Support_Flags">
       <tp:docstring>
         Flags indicating the level of support for message parts on this
         channel.
@@ -190,12 +191,12 @@ USA.</p>
               identifier.</dd>
             -->
 
-            <dt>message-sent (u - <tp:type>Unix_Timestamp</tp:type>)</dt>
+            <dt>message-sent (t - <tp:type>Unix_Timestamp64</tp:type>)</dt>
             <dd>The time the message was sent (if unavailable, the time
               it arrived at a central server MAY be used). Omitted if no
               reasonable approximation is available</dd>
 
-            <dt>message-received (u - <tp:type>Unix_Timestamp</tp:type>)</dt>
+            <dt>message-received (t - <tp:type>Unix_Timestamp64</tp:type>)</dt>
             <dd>The time the message was received locally. SHOULD always
               be present.</dd>
 
@@ -426,7 +427,7 @@ USA.</p>
       </tp:docstring>
     </tp:simple-type>
 
-    <method name="SendMessage">
+    <method name="SendMessage" tp:name-for-bindings="Send_Message">
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>Submit a message to the server for sending.
           If this method returns successfully, the message has been submitted
@@ -492,7 +493,7 @@ USA.</p>
       </tp:flag>
     </tp:flags>
 
-    <signal name="MessageSent">
+    <signal name="MessageSent" tp:name-for-bindings="Message_Sent">
       <tp:docstring>
         Signals that a message has been submitted for sending. This
         MUST be emitted exactly once per emission of the Sent signal on the
@@ -528,7 +529,7 @@ USA.</p>
     </signal>
 
     <property name="PendingMessages" type="aaa{sv}" access="read"
-      tp:type="Message_Part[][]">
+      tp:type="Message_Part[][]" tp:name-for-bindings="Pending_Messages">
       <tp:docstring>
         A list of incoming messages that have neither been acknowledged nor
         rejected. This list is a superset of the one returned by
@@ -537,7 +538,8 @@ USA.</p>
       </tp:docstring>
     </property>
 
-    <signal name="PendingMessagesRemoved">
+    <signal name="PendingMessagesRemoved"
+      tp:name-for-bindings="Pending_Messages_Removed">
       <tp:docstring>
         The messages with the given IDs have been removed from the
         PendingMessages list. Clients SHOULD NOT attempt to acknowledge
@@ -557,7 +559,8 @@ USA.</p>
       </arg>
     </signal>
 
-    <method name="GetPendingMessageContent">
+    <method name="GetPendingMessageContent"
+      tp:name-for-bindings="Get_Pending_Message_Content">
       <tp:docstring>
         Retrieve the content of one or more parts of a pending message.
         Note that this function may take a considerable amount of time
@@ -609,7 +612,7 @@ USA.</p>
       </tp:possible-errors>
     </method>
 
-    <signal name="MessageReceived">
+    <signal name="MessageReceived" tp:name-for-bindings="Message_Received">
       <tp:docstring>
         Signals that a message has been received and added to the pending
         messages queue. This MUST be emitted exactly once per emission of the
diff --git a/spec/Channel_Interface_Password.xml b/spec/Channel_Interface_Password.xml
index 41a92ab..adcd0f8 100644
--- a/spec/Channel_Interface_Password.xml
+++ b/spec/Channel_Interface_Password.xml
@@ -30,7 +30,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
         </tp:docstring>
       </tp:flag>
     </tp:flags>
-    <method name="GetPasswordFlags">
+    <method name="GetPasswordFlags" tp:name-for-bindings="Get_Password_Flags">
       <arg direction="out" type="u" tp:type="Channel_Password_Flags">
         <tp:docstring>
           An integer with the logical OR of all the flags set
@@ -47,13 +47,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
         <tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
       </tp:possible-errors>
     </method>
-    <signal name="PasswordFlagsChanged">
-      <arg name="added" type="u" tp:type="Channel_Password_Flags">
+    <signal name="PasswordFlagsChanged"
+      tp:name-for-bindings="Password_Flags_Changed">
+      <arg name="Added" type="u" tp:type="Channel_Password_Flags">
         <tp:docstring>
           A bitwise OR of the flags which have been set
         </tp:docstring>
       </arg>
-      <arg name="removed" type="u" tp:type="Channel_Password_Flags">
+      <arg name="Removed" type="u" tp:type="Channel_Password_Flags">
         <tp:docstring>
           A bitwise OR of the flags which have been cleared
         </tp:docstring>
@@ -63,8 +64,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
         The user interface should be updated as appropriate.
       </tp:docstring>
     </signal>
-    <method name="ProvidePassword">
-      <arg direction="in" name="password" type="s">
+    <method name="ProvidePassword" tp:name-for-bindings="Provide_Password">
+      <arg direction="in" name="Password" type="s">
         <tp:docstring>
           The password
         </tp:docstring>
diff --git a/spec/Channel_Interface_Transfer.xml b/spec/Channel_Interface_Transfer.xml
index 5165c9a..02591c1 100644
--- a/spec/Channel_Interface_Transfer.xml
+++ b/spec/Channel_Interface_Transfer.xml
@@ -22,12 +22,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
     tp:causes-havoc='not well-tested'>
     <tp:requires interface="org.freedesktop.Telepathy.Channel"/>
     <method name="Transfer">
-      <arg direction="in" name="member" type="u" tp:type="Contact_Handle">
+      <arg direction="in" name="Member" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           The handle of the member to transfer
         </tp:docstring>
       </arg>
-      <arg direction="in" name="destination" type="u" tp:type="Contact_Handle">
+      <arg direction="in" name="Destination" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           The handle of the destination contact
         </tp:docstring>
diff --git a/spec/Channel_Type_Contact_Search.xml b/spec/Channel_Type_Contact_Search.xml
index 0213ca7..7c324d0 100644
--- a/spec/Channel_Type_Contact_Search.xml
+++ b/spec/Channel_Type_Contact_Search.xml
@@ -41,7 +41,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       <tp:member type="(bg)" tp:type="Search_Key_Info" name="Details"/>
     </tp:mapping>
 
-    <method name="GetSearchKeys">
+    <method name="GetSearchKeys" tp:name-for-bindings="Get_Search_Keys">
       <arg direction="out" type="s">
         <tp:docstring>
           A string with any instructions from the server
@@ -81,7 +81,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:docstring>The search has been completed</tp:docstring>
       </tp:enumvalue>
     </tp:enum>
-    <method name="GetSearchState">
+    <method name="GetSearchState" tp:name-for-bindings="Get_Search_State">
       <arg direction="out" type="u" tp:type="Channel_Contact_Search_State">
         <tp:docstring>The search state represented as one of the values of
           ChannelContactSearchState</tp:docstring>
@@ -91,7 +91,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </method>
     <method name="Search">
-      <arg direction="in" name="terms" type="a{sv}" tp:type="String_Variant_Map">
+      <arg direction="in" name="Terms" type="a{sv}" tp:type="String_Variant_Map">
         <tp:docstring>
           A dictionary mapping search key names to the desired values
         </tp:docstring>
@@ -107,19 +107,21 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.InvalidArgument"/>
       </tp:possible-errors>
     </method>
-    <signal name="SearchResultReceived">
-      <arg name="contact" type="u" tp:type="Contact_Handle">
+    <signal name="SearchResultReceived"
+      tp:name-for-bindings="Search_Result_Received">
+      <arg name="Contact" type="u" tp:type="Contact_Handle">
         <tp:docstring>An integer handle for the contact</tp:docstring>
       </arg>
-      <arg name="values" type="a{sv}" tp:type="String_Variant_Map">
+      <arg name="Values" type="a{sv}" tp:type="String_Variant_Map">
         <tp:docstring>A dictionary mapping search key names to values for this contact</tp:docstring>
       </arg>
       <tp:docstring>
         Emitted when a search result is received from the server.
       </tp:docstring>
     </signal>
-    <signal name="SearchStateChanged">
-      <arg name="state" type="u" tp:type="Channel_Contact_Search_State">
+    <signal name="SearchStateChanged"
+      tp:name-for-bindings="Search_State_Changed">
+      <arg name="State" type="u" tp:type="Channel_Contact_Search_State">
         <tp:docstring>An integer representing the new search state</tp:docstring>
       </arg>
       <tp:docstring>
diff --git a/spec/Channel_Type_Room_List.xml b/spec/Channel_Type_Room_List.xml
index 10261c9..6636ce0 100644
--- a/spec/Channel_Type_Room_List.xml
+++ b/spec/Channel_Type_Room_List.xml
@@ -27,7 +27,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       <tp:member type="a{sv}" tp:type="String_Variant_Map" name="Info"/>
     </tp:struct>
 
-    <property name="Server" type="s" access="read">
+    <property name="Server" tp:name-for-bindings="Server"
+      type="s" access="read">
       <tp:docstring>
         <p>For protocols with a concept of chatrooms on multiple servers
           with different DNS names (like XMPP), the DNS name of the server
@@ -38,7 +39,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </property>
 
-    <method name="GetListingRooms">
+    <method name="GetListingRooms" tp:name-for-bindings="Get_Listing_Rooms">
       <arg direction="out" type="b">
         <tp:docstring>
           A boolean indicating if room listing is in progress
@@ -50,8 +51,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </method>
 
-    <signal name="GotRooms">
-      <arg name="rooms" type="a(usa{sv})" tp:type="Room_Info[]">
+    <signal name="GotRooms" tp:name-for-bindings="Got_Rooms">
+      <arg name="Rooms" type="a(usa{sv})" tp:type="Room_Info[]">
         <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
           An array of structs containing:
           <ul>
@@ -80,7 +81,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         </dl>
       </tp:docstring>
     </signal>
-    <method name="ListRooms">
+    <method name="ListRooms" tp:name-for-bindings="List_Rooms">
       <tp:docstring>
         Request the list of rooms from the server. The ListingRooms signal
         should be emitted when this request is being processed, GotRooms when
@@ -94,14 +95,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.PermissionDenied"/>
       </tp:possible-errors>
     </method>
-    <method name="StopListing">
+    <method name="StopListing" tp:name-for-bindings="Stop_Listing">
       <tp:docstring>
         Stop the room listing if it's in progress, but don't close the channel.
         The ListingRooms signal should be emitted when the listing stops.
       </tp:docstring>
     </method>
-    <signal name="ListingRooms">
-      <arg name="listing" type="b">
+    <signal name="ListingRooms" tp:name-for-bindings="Listing_Rooms">
+      <arg name="Listing" type="b">
         <tp:docstring>A boolean indicating if room listing is in progress</tp:docstring>
       </arg>
       <tp:docstring>
diff --git a/spec/Channel_Type_Streamed_Media.xml b/spec/Channel_Type_Streamed_Media.xml
index 0c2eced..aebc131 100644
--- a/spec/Channel_Type_Streamed_Media.xml
+++ b/spec/Channel_Type_Streamed_Media.xml
@@ -87,7 +87,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
 
     <tp:simple-type name="Stream_ID" type="u"/>
 
-    <method name="ListStreams">
+    <method name="ListStreams" tp:name-for-bindings="List_Streams">
       <arg direction="out" type="a(uuuuuu)" tp:type="Media_Stream_Info[]">
         <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
           An array of structs containing:
@@ -109,8 +109,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </method>
 
-    <method name="RemoveStreams">
-      <arg direction="in" name="streams" type="au" tp:type="Stream_ID[]">
+    <method name="RemoveStreams" tp:name-for-bindings="Remove_Streams">
+      <arg direction="in" name="Streams" type="au" tp:type="Stream_ID[]">
         <tp:docstring>
           An array of stream identifiers (as defined in ListStreams)
         </tp:docstring>
@@ -125,13 +125,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:possible-errors>
     </method>
 
-    <method name="RequestStreamDirection">
-      <arg direction="in" name="stream_id" type="u">
+    <method name="RequestStreamDirection"
+      tp:name-for-bindings="Request_Stream_Direction">
+      <arg direction="in" name="Stream_ID" type="u">
         <tp:docstring>
           The stream identifier (as defined in ListStreams)
         </tp:docstring>
       </arg>
-      <arg direction="in" name="stream_direction" type="u" tp:type="Media_Stream_Direction">
+      <arg direction="in" name="Stream_Direction" type="u" tp:type="Media_Stream_Direction">
         <tp:docstring>
           The desired stream direction (a value of MediaStreamDirection)
         </tp:docstring>
@@ -162,13 +163,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:possible-errors>
     </method>
 
-    <method name="RequestStreams">
-      <arg direction="in" name="contact_handle" type="u" tp:type="Contact_Handle">
+    <method name="RequestStreams" tp:name-for-bindings="Request_Streams">
+      <arg direction="in" name="Contact_Handle" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           A contact handle with whom to establish the streams
         </tp:docstring>
       </arg>
-      <arg direction="in" name="types" type="au" tp:type="Media_Stream_Type[]">
+      <arg direction="in" name="Types" type="au" tp:type="Media_Stream_Type[]">
         <tp:docstring>
           An array of stream types (values of MediaStreamType)
         </tp:docstring>
@@ -219,19 +220,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:possible-errors>
     </method>
 
-    <signal name="StreamAdded">
-      <arg name="stream_id" type="u">
+    <signal name="StreamAdded" tp:name-for-bindings="Stream_Added">
+      <arg name="Stream_ID" type="u">
         <tp:docstring>
           The stream identifier (as defined in ListStreams)
         </tp:docstring>
       </arg>
-      <arg name="contact_handle" type="u" tp:type="Contact_Handle">
+      <arg name="Contact_Handle" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           The contact handle who the stream is with (or 0 if it
           represents more than a single member)
         </tp:docstring>
       </arg>
-      <arg name="stream_type" type="u" tp:type="Media_Stream_Type">
+      <arg name="Stream_Type" type="u" tp:type="Media_Stream_Type">
         <tp:docstring>
           The stream type (a value from MediaStreamType)
         </tp:docstring>
@@ -241,18 +242,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </signal>
 
-    <signal name="StreamDirectionChanged">
-      <arg name="stream_id" type="u">
+    <signal name="StreamDirectionChanged"
+      tp:name-for-bindings="Stream_Direction_Changed">
+      <arg name="Stream_ID" type="u">
         <tp:docstring>
         The stream identifier (as defined in ListStreams)
         </tp:docstring>
       </arg>
-      <arg name="stream_direction" type="u" tp:type="Media_Stream_Direction">
+      <arg name="Stream_Direction" type="u" tp:type="Media_Stream_Direction">
         <tp:docstring>
         The new stream direction (as defined in ListStreams)
         </tp:docstring>
       </arg>
-      <arg name="pending_flags" type="u" tp:type="Media_Stream_Pending_Send">
+      <arg name="Pending_Flags" type="u" tp:type="Media_Stream_Pending_Send">
         <tp:docstring>
         The new pending send flags (as defined in ListStreams)
         </tp:docstring>
@@ -265,18 +267,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </signal>
 
-    <signal name="StreamError">
-      <arg name="stream_id" type="u">
+    <signal name="StreamError" tp:name-for-bindings="Stream_Error">
+      <arg name="Stream_ID" type="u">
         <tp:docstring>
         The stream identifier (as defined in ListStreams)
         </tp:docstring>
       </arg>
-      <arg name="errno" type="u">
+      <arg name="Error_Code" type="u" tp:type="Media_Stream_Error">
         <tp:docstring>
           A stream error number, one of the values of MediaStreamError
         </tp:docstring>
       </arg>
-      <arg name="message" type="s">
+      <arg name="Message" type="s">
         <tp:docstring>
           A string describing the error (for debugging purposes only)
         </tp:docstring>
@@ -286,8 +288,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </signal>
 
-    <signal name="StreamRemoved">
-      <arg name="stream_id" type="u">
+    <signal name="StreamRemoved" tp:name-for-bindings="Stream_Removed">
+      <arg name="Stream_ID" type="u">
         <tp:docstring>
         stream_id - the stream identifier (as defined in ListStreams)
         </tp:docstring>
@@ -297,13 +299,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </signal>
 
-    <signal name="StreamStateChanged">
-      <arg name="stream_id" type="u">
+    <signal name="StreamStateChanged"
+      tp:name-for-bindings="Stream_State_Changed">
+      <arg name="Stream_ID" type="u">
         <tp:docstring>
           The stream identifier (as defined in ListStreams)
         </tp:docstring>
       </arg>
-      <arg name="stream_state" type="u" tp:type="Media_Stream_State">
+      <arg name="Stream_State" type="u" tp:type="Media_Stream_State">
         <tp:docstring>
           The new stream state (as defined in ListStreams)
         </tp:docstring>
diff --git a/spec/Channel_Type_Text.xml b/spec/Channel_Type_Text.xml
index 049ed6b..205dbc0 100644
--- a/spec/Channel_Type_Text.xml
+++ b/spec/Channel_Type_Text.xml
@@ -45,8 +45,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       <tp:member type="s" name="Text"/>
     </tp:struct>
 
-    <method name="AcknowledgePendingMessages">
-      <arg direction="in" name="ids" type="au" tp:type="Message_ID[]">
+    <method name="AcknowledgePendingMessages"
+      tp:name-for-bindings="Acknowledge_Pending_Messages">
+      <arg direction="in" name="IDs" type="au" tp:type="Message_ID[]">
         <tp:docstring>
           The IDs of the messages to acknowledge
         </tp:docstring>
@@ -64,7 +65,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:possible-errors>
     </method>
 
-    <method name="GetMessageTypes">
+    <method name="GetMessageTypes" tp:name-for-bindings="Get_Message_Types">
       <arg direction="out" type="au" tp:type="Channel_Text_Message_Type[]">
         <tp:docstring>
           An array of integer message types (ChannelTextMessageType)
@@ -76,8 +77,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </method>
 
-    <method name="ListPendingMessages">
-      <arg direction="in" name="clear" type="b">
+    <method name="ListPendingMessages"
+      tp:name-for-bindings="List_Pending_Messages">
+      <arg direction="in" name="Clear" type="b">
         <tp:docstring>
           If true, behave as if AcknowledgePendingMessages had also been
           called.
@@ -107,7 +109,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </method>
 
-    <signal name="LostMessage">
+    <signal name="LostMessage" tp:name-for-bindings="Lost_Message">
       <tp:docstring>
         This signal is emitted to indicate that an incoming message was
         not able to be stored and forwarded by the connection manager
@@ -115,33 +117,33 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </signal>
 
-    <signal name="Received">
-      <arg name="id" type="u">
+    <signal name="Received" tp:name-for-bindings="Received">
+      <arg name="ID" type="u">
         <tp:docstring>
           A numeric identifier for acknowledging the message
         </tp:docstring>
       </arg>
-      <arg name="timestamp" type="u" tp:type="Unix_Timestamp">
+      <arg name="Timestamp" type="u" tp:type="Unix_Timestamp">
         <tp:docstring>
           A Unix timestamp indicating when the message was received
         </tp:docstring>
       </arg>
-      <arg name="sender" type="u" tp:type="Contact_Handle">
+      <arg name="Sender" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           The handle of the contact who sent the message
         </tp:docstring>
       </arg>
-      <arg name="type" type="u" tp:type="Channel_Text_Message_Type">
+      <arg name="Type" type="u" tp:type="Channel_Text_Message_Type">
         <tp:docstring>
           The type of the message (normal, action, notice, etc.)
         </tp:docstring>
       </arg>
-      <arg name="flags" type="u" tp:type="Channel_Text_Message_Flags">
+      <arg name="Flags" type="u" tp:type="Channel_Text_Message_Flags">
         <tp:docstring>
           A bitwise OR of the message flags
         </tp:docstring>
       </arg>
-      <arg name="text" type="s">
+      <arg name="Text" type="s">
         <tp:docstring>
           The text of the message
         </tp:docstring>
@@ -155,13 +157,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </signal>
 
-    <method name="Send">
-      <arg direction="in" name="type" type="u" tp:type="Channel_Text_Message_Type">
+    <method name="Send" tp:name-for-bindings="Send">
+      <arg direction="in" name="Type" type="u" tp:type="Channel_Text_Message_Type">
         <tp:docstring>
           An integer indicating the type of the message
         </tp:docstring>
       </arg>
-      <arg direction="in" name="text" type="s">
+      <arg direction="in" name="Text" type="s">
         <tp:docstring>
           The message to send
         </tp:docstring>
@@ -214,23 +216,23 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:enumvalue>
     </tp:enum>
 
-    <signal name="SendError">
-      <arg name="error" type="u" tp:type="Channel_Text_Send_Error">
+    <signal name="SendError" tp:name-for-bindings="Send_Error">
+      <arg name="Error" type="u" tp:type="Channel_Text_Send_Error">
         <tp:docstring>
           The error that occurred
         </tp:docstring>
       </arg>
-      <arg name="timestamp" type="u" tp:type="Unix_Timestamp">
+      <arg name="Timestamp" type="u" tp:type="Unix_Timestamp">
         <tp:docstring>
           The Unix timestamp indicating when the message was sent
         </tp:docstring>
       </arg>
-      <arg name="type" type="u" tp:type="Channel_Text_Message_Type">
+      <arg name="Type" type="u" tp:type="Channel_Text_Message_Type">
         <tp:docstring>
           The message type
         </tp:docstring>
       </arg>
-      <arg name="text" type="s">
+      <arg name="Text" type="s">
         <tp:docstring>
           The text of the message
         </tp:docstring>
@@ -249,19 +251,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         actually implemented.</tp:changed>
     </signal>
 
-    <signal name="Sent">
-      <arg name="timestamp" type="u" tp:type="Unix_Timestamp">
+    <signal name="Sent" tp:name-for-bindings="Sent">
+      <arg name="Timestamp" type="u" tp:type="Unix_Timestamp">
         <tp:docstring>
           Unix timestamp indicating when the message was sent
         </tp:docstring>
       </arg>
-      <arg name="type" type="u" tp:type="Channel_Text_Message_Type">
+      <arg name="Type" type="u" tp:type="Channel_Text_Message_Type">
         <tp:docstring>
           The message type (normal, action, notice, etc) from
           ChannelTextMessageType
         </tp:docstring>
       </arg>
-      <arg name="text" type="s">
+      <arg name="Text" type="s">
         <tp:docstring>
           The text of the message
         </tp:docstring>
@@ -463,6 +465,42 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         and handle type CONTACT should continue to succeed, but may return
         a channel with handle type 0, handle 0, the group interface,
         and the local and remote contacts in its members.</p>
+
+      <p>If a channel of type Text is closed while it has pending messages,
+        the connection manager MUST allow this, but SHOULD open a new,
+        identical channel to deliver those messages, signalling it as a new
+        channel with the
+        <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection">NewChannel</tp:dbus-ref>
+        signal (with the suppress_handler parameter set to FALSE).</p>
+
+      <tp:rationale>
+        <p>In effect, this turns this situation, in which a client
+          is likely to lose messages:</p>
+
+        <ul>
+          <li>UI window is closed</li>
+          <li>message arrives</li>
+          <li>text channel emits Received</li>
+          <li>UI calls Close on text channel before it has seen the
+            Received signal</li>
+          <li>text channel emits Closed and closes</li>
+        </ul>
+
+        <p>into something nearly equivalent to this situation, which is
+          fine:</p>
+
+        <ul>
+          <li>UI window is closed</li>
+          <li>UI calls Close on text channel</li>
+          <li>text channel emits Closed and closes</li>
+          <li>message arrives</li>
+          <li>new text channel is created, connection emits NewChannel</li>
+          <li>(the same or a different) UI handles it</li>
+        </ul>
+
+        <p>suppress_handler must be set to FALSE so the replacement channel
+          will be handled by something.</p>
+      </tp:rationale>
     </tp:docstring>
   </interface>
 </node>
diff --git a/spec/Channel_Type_Tubes.xml b/spec/Channel_Type_Tubes.xml
index b187c03..68df224 100644
--- a/spec/Channel_Type_Tubes.xml
+++ b/spec/Channel_Type_Tubes.xml
@@ -273,7 +273,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
         tp:type="Socket_Access_Control[]"/>
     </tp:mapping>
 
-    <method name="GetAvailableStreamTubeTypes">
+    <method name="GetAvailableStreamTubeTypes"
+      tp:name-for-bindings="Get_Available_Stream_Tube_Types">
       <tp:docstring>List the available address types and access-control types
         for stream tubes.</tp:docstring>
       <arg direction="out" type="a{uau}" tp:type="Supported_Socket_Map">
@@ -302,7 +303,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </arg>
     </method>
 
-    <method name="GetAvailableTubeTypes">
+    <method name="GetAvailableTubeTypes"
+      tp:name-for-bindings="Get_Available_Tube_Types">
       <arg direction="out" type="au" tp:type="Tube_Type[]">
         <tp:docstring>
           An array of the available tube types, as defined by the Tube_Type
@@ -311,7 +313,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </arg>
     </method>
 
-    <method name="ListTubes">
+    <method name="ListTubes" tp:name-for-bindings="List_Tubes">
       <arg direction="out" type="a(uuusa{sv}u)" tp:type="Tube_Info[]">
         <tp:docstring>
          Return an array of tuples, each representing a tube, with the
@@ -329,11 +331,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </arg>
     </method>
 
-    <method name="OfferDBusTube">
+    <method name="OfferDBusTube" tp:name-for-bindings="Offer_DBus_Tube">
       <tp:docstring>
         Offers a D-Bus tube providing the service specified.
       </tp:docstring>
-      <arg direction="in" name="service" type="s">
+      <arg direction="in" name="Service" type="s">
         <tp:docstring>
           A string representing the service name that will be used over the
           tube.
@@ -341,7 +343,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
           com.example.ServiceName.
         </tp:docstring>
       </arg>
-      <arg direction="in" name="parameters" type="a{sv}"
+      <arg direction="in" name="Parameters" type="a{sv}"
         tp:type="String_Variant_Map">
         <tp:docstring>
           A dictionary of properties for the new tube; the allowable keys,
@@ -371,11 +373,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:possible-errors>
     </method>
 
-    <method name="OfferStreamTube">
+    <method name="OfferStreamTube" tp:name-for-bindings="Offer_Stream_Tube">
       <tp:docstring>
         Offer a stream tube exporting the local socket specified.
       </tp:docstring>
-      <arg direction="in" name="service" type="s">
+      <arg direction="in" name="Service" type="s">
         <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
           A string representing the service name that will be used over the
           tube.
@@ -387,7 +389,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
           "rsync" or "daap".
         </tp:docstring>
       </arg>
-      <arg direction="in" name="parameters" type="a{sv}"
+      <arg direction="in" name="Parameters" type="a{sv}"
         tp:type="String_Variant_Map">
         <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
           <p>A dictionary of properties for the new tube; the allowable keys,
@@ -398,26 +400,26 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
           use in the DNS-SD TXT record for that service.</p>
         </tp:docstring>
       </arg>
-      <arg direction="in" name="address_type" type="u" tp:type="Socket_Address_Type">
+      <arg direction="in" name="Address_Type" type="u" tp:type="Socket_Address_Type">
         <tp:docstring>
           The type of the listening address of the local service, as a member of
           Socket_Address_Type.
         </tp:docstring>
       </arg>
-      <arg direction="in" name="address" type="v">
+      <arg direction="in" name="Address" type="v">
         <tp:docstring>
           The listening address of the local service, as indicated by the
           address_type.
         </tp:docstring>
       </arg>
-      <arg direction="in" name="access_control" type="u" tp:type="Socket_Access_Control">
+      <arg direction="in" name="Access_Control" type="u" tp:type="Socket_Access_Control">
         <tp:docstring>
           The access control the local service applies to the local socket,
           specified so the connection manager can behave appropriately
           when it connects.
         </tp:docstring>
       </arg>
-      <arg direction="in" name="access_control_param" type="v">
+      <arg direction="in" name="Access_Control_Param" type="v">
         <tp:docstring>
           A parameter for the access control type, to be interpreted as
           specified in the documentation for the Socket_Access_Control enum.
@@ -445,55 +447,55 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:possible-errors>
     </method>
 
-    <signal name="NewTube">
+    <signal name="NewTube" tp:name-for-bindings="New_Tube">
       <tp:docstring>
         Emitted when a tube is created.
       </tp:docstring>
-      <arg name="id" type="u" tp:type="Tube_ID">
+      <arg name="ID" type="u" tp:type="Tube_ID">
         <tp:docstring>
           The ID of the new tube.
         </tp:docstring>
       </arg>
-      <arg name="initiator" type="u" tp:type="Contact_Handle">
+      <arg name="Initiator" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           The handle of the contact who initiated the tube.
         </tp:docstring>
       </arg>
-      <arg name="type" type="u" tp:type="Tube_Type">
+      <arg name="Type" type="u" tp:type="Tube_Type">
         <tp:docstring>
           The tube type, as defined by the Tube_Type enum.
         </tp:docstring>
       </arg>
-      <arg name="service" type="s">
+      <arg name="Service" type="s">
         <tp:docstring>
           A string representing the service that will be used over the tube.
         </tp:docstring>
       </arg>
-      <arg name="parameters" type="a{sv}" tp:type="String_Variant_Map">
+      <arg name="Parameters" type="a{sv}" tp:type="String_Variant_Map">
         <tp:docstring>
           The new tube's properties.
         </tp:docstring>
       </arg>
-      <arg name="state" type="u" tp:type="Tube_State">
+      <arg name="State" type="u" tp:type="Tube_State">
         <tp:docstring>
           The new tube's state.
         </tp:docstring>
       </arg>
     </signal>
 
-    <method name="AcceptDBusTube">
+    <method name="AcceptDBusTube" tp:name-for-bindings="Accept_DBus_Tube">
       <tp:docstring>
         Accept a D-Bus tube that's in the "local pending" state. The
         connection manager will attempt to open the tube. The tube remains in
         the "local pending" state until the TubeStateChanged signal is
         emitted.
       </tp:docstring>
-      <arg direction="in" name="id" type="u" tp:type="Tube_ID">
+      <arg direction="in" name="ID" type="u" tp:type="Tube_ID">
         <tp:docstring>
           The ID of the tube to accept.
         </tp:docstring>
       </arg>
-      <arg direction="out" name="address" type="s">
+      <arg direction="out" name="Address" type="s">
         <tp:docstring>
           The string describing the address of the private bus. The client
           should not attempt to connect to the address until the tube is open.
@@ -509,36 +511,36 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:possible-errors>
     </method>
 
-    <method name="AcceptStreamTube">
+    <method name="AcceptStreamTube" tp:name-for-bindings="Accept_Stream_Tube">
       <tp:docstring>
         Accept a stream tube that's in the "local pending" state. The
         connection manager will attempt to open the tube. The tube remains in
         the "local pending" state until the TubeStateChanged signal is
         emitted.
       </tp:docstring>
-      <arg direction="in" name="id" type="u" tp:type="Tube_ID">
+      <arg direction="in" name="ID" type="u" tp:type="Tube_ID">
         <tp:docstring>
           The ID of the tube to accept.
         </tp:docstring>
       </arg>
-      <arg direction="in" name="address_type" type="u" tp:type="Socket_Address_Type">
+      <arg direction="in" name="Address_Type" type="u" tp:type="Socket_Address_Type">
         <tp:docstring>
           The type of address the connection manager should listen on.
         </tp:docstring>
       </arg>
-      <arg direction="in" name="access_control" type="u" tp:type="Socket_Access_Control">
+      <arg direction="in" name="Access_Control" type="u" tp:type="Socket_Access_Control">
         <tp:docstring>
           The type of access control the connection manager should apply to
           the socket.
         </tp:docstring>
       </arg>
-      <arg direction="in" name="access_control_param" type="v">
+      <arg direction="in" name="Access_Control_Param" type="v">
         <tp:docstring>
           A parameter for the access control type, to be interpreted as
           specified in the documentation for the Socket_Access_Control enum.
         </tp:docstring>
       </arg>
-      <arg direction="out" name="address" type="v">
+      <arg direction="out" name="Address" type="v">
         <tp:docstring>
           The address on which the connection manager will listen for
           connections to this tube. The client should not attempt to connect
@@ -561,27 +563,27 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:possible-errors>
     </method>
 
-    <signal name="TubeStateChanged">
+    <signal name="TubeStateChanged" tp:name-for-bindings="Tube_State_Changed">
       <tp:docstring>
         Emitted when the state of a tube changes.
       </tp:docstring>
-      <arg name="id" type="u" tp:type="Tube_ID">
+      <arg name="ID" type="u" tp:type="Tube_ID">
         <tp:docstring>
           The ID of the tube that changed state.
         </tp:docstring>
       </arg>
-      <arg name="state" type="u" tp:type="Tube_State">
+      <arg name="State" type="u" tp:type="Tube_State">
         <tp:docstring>
           The new state of the tube; see the Tube_State enumeration.
         </tp:docstring>
       </arg>
     </signal>
 
-    <method name="CloseTube">
+    <method name="CloseTube" tp:name-for-bindings="Close_Tube">
       <tp:docstring>
         Close a tube.
       </tp:docstring>
-      <arg direction="in" name="id" type="u" tp:type="Tube_ID">
+      <arg direction="in" name="ID" type="u" tp:type="Tube_ID">
         <tp:docstring>
           The ID of the tube to close.
         </tp:docstring>
@@ -591,24 +593,25 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:possible-errors>
     </method>
 
-    <signal name="TubeClosed">
+    <signal name="TubeClosed" tp:name-for-bindings="Tube_Closed">
       <tp:docstring>
        Emitted when a tube has been closed. The ID of a closed tube is no
        longer valid. The ID may later be reused for a new tube.
       </tp:docstring>
-      <arg name="id" type="u" tp:type="Tube_ID">
+      <arg name="ID" type="u" tp:type="Tube_ID">
         <tp:docstring>
           The ID of the tube that was closed.
         </tp:docstring>
       </arg>
     </signal>
 
-    <method name="GetDBusTubeAddress">
+    <method name="GetDBusTubeAddress"
+      tp:name-for-bindings="Get_DBus_Tube_Address">
       <tp:docstring>
         For a D-Bus tube, return a string describing the address of the
         private bus.
       </tp:docstring>
-      <arg direction="in" name="id" type="u" tp:type="Tube_ID">
+      <arg direction="in" name="ID" type="u" tp:type="Tube_ID">
         <tp:docstring>
           The ID of the tube to get an address for.
         </tp:docstring>
@@ -632,12 +635,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:possible-errors>
     </method>
 
-    <method name="GetDBusNames">
+    <method name="GetDBusNames" tp:name-for-bindings="Get_DBus_Names">
       <tp:docstring>
         For a multi-user (i.e. Handle_Type_Room) D-Bus tube, obtain a mapping
         between contact handles and their unique bus names on this tube.
       </tp:docstring>
-      <arg direction="in" name="id" type="u" tp:type="Tube_ID">
+      <arg direction="in" name="ID" type="u" tp:type="Tube_ID">
         <tp:docstring>
           The ID of the tube to get names for.
         </tp:docstring>
@@ -662,45 +665,46 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:possible-errors>
     </method>
 
-    <signal name="DBusNamesChanged">
+    <signal name="DBusNamesChanged" tp:name-for-bindings="DBus_Names_Changed">
       <tp:docstring>
         Emitted on a multi-user (i.e. Handle_Type_Room) D-Bus tube when a
         participant opens or closes the tube.
       </tp:docstring>
-      <arg name="id" type="u" tp:type="Tube_ID">
+      <arg name="ID" type="u" tp:type="Tube_ID">
         <tp:docstring>
           The ID of the tube whose names have changed.
         </tp:docstring>
       </arg>
-      <arg name="added" type="a(us)" tp:type="DBus_Tube_Member[]">
+      <arg name="Added" type="a(us)" tp:type="DBus_Tube_Member[]">
         <tp:docstring>
           Array of handles and D-Bus names of new participants.
         </tp:docstring>
       </arg>
-      <arg name="removed" type="au" tp:type="Contact_Handle[]">
+      <arg name="Removed" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
           Array of handles of former participants.
         </tp:docstring>
       </arg>
     </signal>
 
-    <method name="GetStreamTubeSocketAddress">
+    <method name="GetStreamTubeSocketAddress"
+      tp:name-for-bindings="Get_Stream_Tube_Socket_Address">
       <tp:docstring>
         For a stream tube, obtain the address of the socket used to
         communicate over this tube.
       </tp:docstring>
-      <arg direction="in" name="id" type="u" tp:type="Tube_ID">
+      <arg direction="in" name="ID" type="u" tp:type="Tube_ID">
         <tp:docstring>
           The ID of the stream tube to get the socket for.
         </tp:docstring>
       </arg>
-      <arg direction="out" name="address_type" type="u" tp:type="Socket_Address_Type">
+      <arg direction="out" name="Address_Type" type="u" tp:type="Socket_Address_Type">
         <tp:docstring>
           The type of the listening address of the socket, as a member of
           Socket_Address_Type.
         </tp:docstring>
       </arg>
-      <arg direction="out" name="address" type="v">
+      <arg direction="out" name="Address" type="v">
         <tp:docstring>
           The listening address of the socket, as indicated by the
           address_type.
@@ -720,17 +724,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
       </tp:possible-errors>
     </method>
 
-    <signal name="StreamTubeNewConnection">
+    <signal name="StreamTubeNewConnection"
+      tp:name-for-bindings="Stream_Tube_New_Connection">
       <tp:docstring>
         Emitted on a stream tube when a participant opens a new connection
         to its socket.
       </tp:docstring>
-      <arg name="id" type="u" tp:type="Tube_ID">
+      <arg name="ID" type="u" tp:type="Tube_ID">
         <tp:docstring>
           The ID of the tube
         </tp:docstring>
       </arg>
-      <arg name="handle" type="u" tp:type="Contact_Handle">
+      <arg name="Handle" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           The handle of the participant who opened the new connection
         </tp:docstring>
diff --git a/spec/Connection.xml b/spec/Connection.xml
index 4dac8d0..f543a16 100644
--- a/spec/Connection.xml
+++ b/spec/Connection.xml
@@ -44,7 +44,7 @@ USA.</p>
       </tp:member>
     </tp:struct>
 
-    <method name="Connect">
+    <method name="Connect" tp:name-for-bindings="Connect">
       <tp:docstring>
         Request that the connection be established. This will be done
         asynchronously and errors will be returned by emitting StatusChanged
@@ -58,7 +58,7 @@ USA.</p>
       </tp:possible-errors>
     </method>
 
-    <method name="Disconnect">
+    <method name="Disconnect" tp:name-for-bindings="Disconnect">
       <tp:docstring>
         Request that the connection be closed. This closes the connection if
         it's not already in DISCONNECTED state, and destroys the connection
@@ -66,7 +66,7 @@ USA.</p>
       </tp:docstring>
     </method>
 
-    <method name="GetInterfaces">
+    <method name="GetInterfaces" tp:name-for-bindings="Get_Interfaces">
       <arg direction="out" type="as" tp:type="DBus_Interface[]">
         <tp:docstring>
           An array of D-Bus interface names
@@ -109,7 +109,7 @@ USA.</p>
       </tp:possible-errors>
     </method>
 
-    <method name="GetProtocol">
+    <method name="GetProtocol" tp:name-for-bindings="Get_Protocol">
       <arg direction="out" type="s" tp:type="Protocol">
         <tp:docstring>
           A string identifier for the protocol
@@ -121,26 +121,59 @@ USA.</p>
       </tp:docstring>
     </method>
 
-    <method name="GetSelfHandle">
-      <arg direction="out" type="u" tp:type="Contact_Handle">
+    <signal name="SelfHandleChanged"
+        tp:name-for-bindings="Self_Handle_Changed">
+      <tp:docstring>
+        Emitted whenever the SelfHandle property changes. If the connection
+        is not yet in the CONNECTED state, this signal is not guaranteed
+        to be emitted.
+      </tp:docstring>
+      <tp:added version="0.17.10">Clients MAY assume that if the
+        SelfHandle property exists, this signal will be emitted when
+        necessary.</tp:added>
+
+      <arg type="u" tp:type="Contact_Handle" name="Self_Handle">
         <tp:docstring>
-          An integer handle representing the user
+          The new value of the SelfHandle property.
         </tp:docstring>
       </arg>
+    </signal>
 
+    <property name="SelfHandle" tp:name-for-bindings="Self_Handle"
+      type="u" tp:type="Contact_Handle" access="read">
       <tp:docstring>
-        Get the handle which represents the user on this connection, which will
+        The handle which represents the user on this connection, which will
         remain valid for the lifetime of this connection, or until a change
-        in the user's identifier is signalled by the Renamed signal on the
-        Renaming interface (if present).
+        in the user's identifier is signalled by the SelfHandleChanged signal.
+        If the connection is not yet in the CONNECTED state, the value of
+        this property MAY be zero.
+      </tp:docstring>
+      <tp:added version="0.17.10">For compatibility with older
+        versions, clients should fall back to calling the GetSelfHandle
+        method.</tp:added>
+    </property>
+
+    <method name="GetSelfHandle" tp:name-for-bindings="Get_Self_Handle">
+      <arg direction="out" type="u" tp:type="Contact_Handle">
+        <tp:docstring>
+          The value of the SelfHandle property
+        </tp:docstring>
+      </arg>
+
+      <tp:docstring>
+        Returns the value of the SelfHandle property. Change notification
+        is via the SelfHandleChanged signal.
       </tp:docstring>
+      <tp:deprecated version="0.17.10">Use GetAll to get the
+        SelfHandle property (and all other Connection properties)
+        instead.</tp:deprecated>
 
       <tp:possible-errors>
         <tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
       </tp:possible-errors>
     </method>
 
-    <method name="GetStatus">
+    <method name="GetStatus" tp:name-for-bindings="Get_Status">
       <arg direction="out" type="u" tp:type="Connection_Status">
         <tp:docstring>
           An integer representing the current status
@@ -152,14 +185,14 @@ USA.</p>
       </tp:docstring>
     </method>
 
-    <method name="HoldHandles">
-      <arg direction="in" name="handle_type" type="u" tp:type="Handle_Type">
+    <method name="HoldHandles" tp:name-for-bindings="Hold_Handles">
+      <arg direction="in" name="Handle_Type" type="u" tp:type="Handle_Type">
         <tp:docstring>
           The type of handle to be held
         </tp:docstring>
       </arg>
 
-      <arg direction="in" name="handles" type="au" tp:type="Handle[]">
+      <arg direction="in" name="Handles" type="au" tp:type="Handle[]">
         <tp:docstring>
           A array of integer handles to hold
         </tp:docstring>
@@ -194,14 +227,14 @@ USA.</p>
       </tp:possible-errors>
     </method>
 
-    <method name="InspectHandles">
-      <arg direction="in" name="handle_type" type="u" tp:type="Handle_Type">
+    <method name="InspectHandles" tp:name-for-bindings="Inspect_Handles">
+      <arg direction="in" name="Handle_Type" type="u" tp:type="Handle_Type">
         <tp:docstring>
           The type of handle to be inspected
         </tp:docstring>
       </arg>
 
-      <arg direction="in" name="handles" type="au" tp:type="Handle[]">
+      <arg direction="in" name="Handles" type="au" tp:type="Handle[]">
         <tp:docstring>
           An array of integer handles of this type
         </tp:docstring>
@@ -229,7 +262,7 @@ USA.</p>
       </tp:possible-errors>
     </method>
 
-    <method name="ListChannels">
+    <method name="ListChannels" tp:name-for-bindings="List_Channels">
       <arg direction="out" type="a(osuu)" tp:type="Channel_Info[]">
         <tp:docstring>
           An array of structs representing channels.
@@ -245,34 +278,34 @@ USA.</p>
       </tp:possible-errors>
     </method>
 
-    <signal name="NewChannel">
-      <arg name="object_path" type="o">
+    <signal name="NewChannel" tp:name-for-bindings="New_Channel">
+      <arg name="Object_Path" type="o">
         <tp:docstring>
           A D-Bus object path for the channel object on this service
         </tp:docstring>
       </arg>
 
-      <arg name="channel_type" type="s" tp:type="DBus_Interface">
+      <arg name="Channel_Type" type="s" tp:type="DBus_Interface">
         <tp:docstring>
           A D-Bus interface name representing the channel type
         </tp:docstring>
       </arg>
 
-      <arg name="handle_type" type="u" tp:type="Handle_Type">
+      <arg name="Handle_Type" type="u" tp:type="Handle_Type">
         <tp:docstring>
           An integer representing the type of handle this channel
           communicates with, or Handle_Type_None if no handle is specified
         </tp:docstring>
       </arg>
 
-      <arg name="handle" type="u" tp:type="Handle">
+      <arg name="Handle" type="u" tp:type="Handle">
         <tp:docstring>
           A handle indicating the specific contact, room or list this
           channel communicates with, or zero if no handle is specified
         </tp:docstring>
       </arg>
 
-      <arg name="suppress_handler" type="b">
+      <arg name="Suppress_Handler" type="b">
         <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
           <p>If true, the channel was requested by a client that intends to
             present it to the user itself (i.e. it passed suppress_handler=TRUE
@@ -296,14 +329,14 @@ USA.</p>
       </tp:docstring>
     </signal>
 
-    <method name="ReleaseHandles">
-      <arg direction="in" name="handle_type" type="u" tp:type="Handle_Type">
+    <method name="ReleaseHandles" tp:name-for-bindings="Release_Handles">
+      <arg direction="in" name="Handle_Type" type="u" tp:type="Handle_Type">
         <tp:docstring>
           An integer handle type (as defined in RequestHandle)
         </tp:docstring>
       </arg>
 
-      <arg direction="in" name="handles" type="au" tp:type="Handle[]">
+      <arg direction="in" name="Handles" type="au" tp:type="Handle[]">
         <tp:docstring>
           An array of integer handles being held by the client
         </tp:docstring>
@@ -336,21 +369,21 @@ USA.</p>
       </tp:possible-errors>
     </method>
 
-    <method name="RequestChannel">
-      <arg direction="in" name="type" type="s" tp:type="DBus_Interface">
+    <method name="RequestChannel" tp:name-for-bindings="Request_Channel">
+      <arg direction="in" name="Type" type="s" tp:type="DBus_Interface">
         <tp:docstring>
           A D-Bus interface name representing base channel type
         </tp:docstring>
       </arg>
 
-      <arg direction="in" name="handle_type" type="u" tp:type="Handle_Type">
+      <arg direction="in" name="Handle_Type" type="u" tp:type="Handle_Type">
         <tp:docstring>
           An integer representing the handle type, or Handle_Type_None if
           no handle is specified
         </tp:docstring>
       </arg>
 
-      <arg direction="in" name="handle" type="u" tp:type="Handle">
+      <arg direction="in" name="Handle" type="u" tp:type="Handle">
         <tp:docstring>
           A nonzero integer handle representing a contact, room, list etc.
           according to handle_type, or zero if the handle_type is
@@ -358,11 +391,34 @@ USA.</p>
         </tp:docstring>
       </arg>
 
-      <arg direction="in" name="suppress_handler" type="b">
+      <arg direction="in" name="Suppress_Handler" type="b">
         <tp:docstring>
-          If true, the requesting client intends to take responsibility for
-          displaying the channel to the user, so no other handler needs to
-          be launched
+          <p>Clients SHOULD always set this to true.</p>
+
+          <tp:rationale>
+            <p>The historical meaning was that clients that did not
+              intend to take responsibility for displaying the channel to
+              the user could set this to FALSE, in which case the channel
+              dispatcher would launch an appropriate channel handler.</p>
+
+            <p>However, clients whose functionality relies on having a
+              working channel dispatcher should obtain that functionality by
+              calling methods on the channel dispatcher, so that they will
+              get an appropriate error if the channel dispatcher is missing
+              or not working.</p>
+
+            <p>The channel dispatcher itself should set this to true too,
+              so that it will ignore the
+              <tp:member-ref>NewChannel</tp:member-ref> signal that results
+              from the creation of the channel. It can then dispatch the
+              channel returned from this method to an
+              appropriate handler.</p>
+
+            <p>So, there is no sensible use-case for setting this to false,
+              and setting it to false can result in unhandled channels (in
+              the case where clients assume that a channel dispatcher is
+              present, but it isn't).</p>
+          </tp:rationale>
         </tp:docstring>
       </arg>
 
@@ -481,14 +537,14 @@ USA.</p>
         Handle_Type_Group</tp:docstring>
     </tp:simple-type>
 
-    <method name="RequestHandles">
-      <arg direction="in" name="handle_type" type="u" tp:type="Handle_Type">
+    <method name="RequestHandles" tp:name-for-bindings="Request_Handles">
+      <arg direction="in" name="Handle_Type" type="u" tp:type="Handle_Type">
         <tp:docstring>
           The type of handle required
         </tp:docstring>
       </arg>
 
-      <arg direction="in" name="names" type="as">
+      <arg direction="in" name="Names" type="as">
         <tp:docstring>
           An array of names of entities to request handles for
         </tp:docstring>
@@ -623,14 +679,14 @@ USA.</p>
       </tp:enumvalue>
     </tp:enum>
 
-    <signal name="StatusChanged">
-      <arg name="status" type="u" tp:type="Connection_Status">
+    <signal name="StatusChanged" tp:name-for-bindings="Status_Changed">
+      <arg name="Status" type="u" tp:type="Connection_Status">
         <tp:docstring>
           An integer indicating the new status, as defined by ConnectionStatus
         </tp:docstring>
       </arg>
 
-      <arg name="reason" type="u" tp:type="Connection_Status_Reason">
+      <arg name="Reason" type="u" tp:type="Connection_Status_Reason">
         <tp:docstring>
           An integer indicating the reason for the status change, as defined
           by ConnectionStatusReason
@@ -645,10 +701,43 @@ USA.</p>
     </signal>
 
     <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>This models a connection to a single user account on a communication
-    service. Its basic capability is to provide the facility to request and
-    receive channels of differing types (such as text channels or streaming
-    media channels) which are used to carry out further communication.</p>
+      <p>This models a connection to a single user account on a communication
+        service. Its basic capability is to provide the facility to request and
+        receive channels of differing types (such as text channels or streaming
+        media channels) which are used to carry out further communication.</p>
+
+      <p>In order to allow Connection objects to be discovered by new clients,
+        the object path and well-known bus name MUST be of the form
+        <code>/org/freedesktop/Telepathy/Connection/cmname/proto/account</code>
+        and
+        <code>org.freedesktop.Telepathy.Connection.cmname.proto.account</code>
+        where:</p>
+
+      <ul>
+        <li><em>cmname</em> is the same
+          <tp:type>Connection_Manager_Name</tp:type> that appears
+          in the connection manager's object path and well-known bus name</li>
+        <li><em>proto</em> is the <tp:type>Protocol</tp:type> name as seen in
+          <tp:dbus-ref namespace="org.freedesktop.Telepathy.ConnectionManager">ListProtocols</tp:dbus-ref>,
+          but with "-" replaced with "_" to get a valid
+          object path/bus name</li>
+        <li><em>account</em> is some non-empty sequence of ASCII letters,
+          digits and underscores not starting with a digit</li>
+      </ul>
+
+      <p><em>account</em> SHOULD be formed such that any valid distinct
+        connection instance on this protocol has a distinct name. This
+        might be formed by including the server name followed by the user
+        name (escaped via some suitable mechanism like telepathy-glib's
+        tp_escape_as_identifier() function to preserve uniqueness); on
+        protocols where connecting multiple times is permissable, a
+        per-connection identifier might be necessary to ensure
+        uniqueness.</p>
+
+      <p>Clients MAY parse the object path to determine the connection
+        manager name and the protocol, but MUST NOT attempt to parse the
+        <em>account</em> part. Connection managers MAY use any unique string
+        for this part.</p>
 
     <p>As well as the methods and signatures below, arbitrary interfaces may be
     provided by the Connection object to represent extra connection-wide
@@ -679,6 +768,13 @@ USA.</p>
     keep handles from being released with HoldHandles, and notify that they are
     no longer storing handles with ReleaseHandles.</p>
     </tp:docstring>
+
+    <tp:changed version="0.17.10">Previously, the account part of
+      Connection bus names/object paths was allowed to have more than one
+      component (i.e. contain dots or slashes), resulting in Connection
+      bus names and object paths with more than 7 components. We now restrict
+      Connection bus names/object paths to have exactly 7
+      components.</tp:changed>
   </interface>
 </node>
 <!-- vim:set sw=2 sts=2 et ft=xml: -->
diff --git a/spec/Connection_Interface_Aliasing.xml b/spec/Connection_Interface_Aliasing.xml
index 5d6eb53..ee14fa7 100644
--- a/spec/Connection_Interface_Aliasing.xml
+++ b/spec/Connection_Interface_Aliasing.xml
@@ -35,8 +35,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       <tp:member type="s" name="Alias"/>
     </tp:struct>
 
-    <signal name="AliasesChanged">
-      <arg name="aliases" type="a(us)" tp:type="Alias_Pair[]">
+    <signal name="AliasesChanged" tp:name-for-bindings="Aliases_Changed">
+      <arg name="Aliases" type="a(us)" tp:type="Alias_Pair[]">
         <!-- FIXME: if we break API, this could be an Alias_Map, a{us} -->
         <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
           An array containing structs of:
@@ -68,7 +68,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         </tp:docstring>
       </tp:flag>
     </tp:flags>
-    <method name="GetAliasFlags">
+    <method name="GetAliasFlags" tp:name-for-bindings="Get_Alias_Flags">
       <arg direction="out" type="u" tp:type="Connection_Alias_Flags">
         <tp:docstring>
           An integer with a bitwise OR of flags from ConnectionAliasFlags
@@ -82,8 +82,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
       </tp:possible-errors>
     </method>
-    <method name="RequestAliases">
-      <arg direction="in" name="contacts" type="au" tp:type="Contact_Handle[]">
+    <method name="RequestAliases" tp:name-for-bindings="Request_Aliases">
+      <arg direction="in" name="Contacts" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
           An array of handles representing contacts
         </tp:docstring>
@@ -103,8 +103,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.InvalidHandle"/>
       </tp:possible-errors>
     </method>
-    <method name="GetAliases">
-      <arg direction="in" name="contacts" type="au" tp:type="Contact_Handle[]">
+    <method name="GetAliases" tp:name-for-bindings="Get_Aliases">
+      <arg direction="in" name="Contacts" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
           An array of handles representing contacts
         </tp:docstring>
@@ -126,8 +126,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.InvalidHandle"/>
       </tp:possible-errors>
     </method>
-    <method name="SetAliases">
-      <arg direction="in" name="aliases" type="a{us}" tp:type="Alias_Map">
+    <method name="SetAliases" tp:name-for-bindings="Set_Aliases">
+      <arg direction="in" name="Aliases" type="a{us}" tp:type="Alias_Map">
         <tp:docstring>
           A dictionary mapping integer handles of contacts
           to strings of the new alias to set.
diff --git a/spec/Connection_Interface_Avatars.xml b/spec/Connection_Interface_Avatars.xml
index 53d3108..76b85f3 100644
--- a/spec/Connection_Interface_Avatars.xml
+++ b/spec/Connection_Interface_Avatars.xml
@@ -28,13 +28,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       <tp:member type="s" name="Token"/>
     </tp:mapping>
 
-    <signal name="AvatarUpdated">
-      <arg name="contact" type="u" tp:type="Contact_Handle">
+    <signal name="AvatarUpdated" tp:name-for-bindings="Avatar_Updated">
+      <arg name="Contact" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           An integer handle for the contact whose avatar has changed
         </tp:docstring>
       </arg>
-      <arg name="new_avatar_token" type="s">
+      <arg name="New_Avatar_Token" type="s">
         <tp:docstring>
           Unique token for their new avatar
         </tp:docstring>
@@ -46,23 +46,23 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         avatar should be requested with RequestAvatars.
       </tp:docstring>
     </signal>
-    <signal name="AvatarRetrieved">
-      <arg name="contact" type="u" tp:type="Contact_Handle">
+    <signal name="AvatarRetrieved" tp:name-for-bindings="Avatar_Retrieved">
+      <arg name="Contact" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           The contact whose avatar has been retrieved
         </tp:docstring>
       </arg>
-      <arg name="token" type="s">
+      <arg name="Token" type="s">
         <tp:docstring>
           The token corresponding to the avatar
         </tp:docstring>
       </arg>
-      <arg name="avatar" type="ay">
+      <arg name="Avatar" type="ay">
         <tp:docstring>
           An array of bytes containing the image data
         </tp:docstring>
       </arg>
-      <arg name="type" type="s">
+      <arg name="Type" type="s">
         <tp:docstring>
           A string containing the image MIME type (eg image/jpeg), or empty if
           unknown
@@ -72,7 +72,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         Emitted when the avatar for a contact has been retrieved.
       </tp:docstring>
     </signal>
-    <method name="GetAvatarRequirements">
+    <method name="GetAvatarRequirements"
+      tp:name-for-bindings="Get_Avatar_Requirements">
       <arg direction="out" type="as">
         <tp:docstring>
           An array of supported MIME types (eg image/jpeg)
@@ -113,8 +114,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"/>
       </tp:possible-errors>
     </method>
-    <method name="GetAvatarTokens">
-      <arg direction="in" name="contacts" type="au" tp:type="Contact_Handle[]">
+    <method name="GetAvatarTokens" tp:name-for-bindings="Get_Avatar_Tokens">
+      <arg direction="in" name="Contacts" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
         An array of handles representing contacts
         </tp:docstring>
@@ -139,8 +140,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"/>
       </tp:possible-errors>
     </method>
-    <method name="GetKnownAvatarTokens">
-      <arg direction="in" name="contacts" type="au" tp:type="Contact_Handle[]">
+    <method name="GetKnownAvatarTokens"
+      tp:name-for-bindings="Get_Known_Avatar_Tokens">
+      <arg direction="in" name="Contacts" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
         An array of handles representing contacts
         </tp:docstring>
@@ -170,8 +172,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"/>
       </tp:possible-errors>
     </method>
-    <method name="RequestAvatar">
-      <arg direction="in" name="contact" type="u" tp:type="Contact_Handle">
+    <method name="RequestAvatar" tp:name-for-bindings="Request_Avatar">
+      <arg direction="in" name="Contact" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           An integer handle for the contact to request the avatar for
         </tp:docstring>
@@ -203,8 +205,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         </tp:error>
       </tp:possible-errors>
     </method>
-    <method name="RequestAvatars">
-      <arg direction="in" name="contacts" type="au"
+    <method name="RequestAvatars" tp:name-for-bindings="Request_Avatars">
+      <arg direction="in" name="Contacts" type="au"
         tp:type="Contact_Handle[]">
         <tp:docstring>
           The contacts to retrieve avatars for
@@ -222,13 +224,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.InvalidHandle"/>
       </tp:possible-errors>
     </method>
-    <method name="SetAvatar">
-      <arg direction="in" name="avatar" type="ay">
+    <method name="SetAvatar" tp:name-for-bindings="Set_Avatar">
+      <arg direction="in" name="Avatar" type="ay">
         <tp:docstring>
           An array of bytes representing the avatar image data
         </tp:docstring>
       </arg>
-      <arg direction="in" name="mime_type" type="s">
+      <arg direction="in" name="MIME_Type" type="s">
         <tp:docstring>
           A string representing the image MIME type
         </tp:docstring>
@@ -250,7 +252,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"/>
       </tp:possible-errors>
     </method>
-    <method name="ClearAvatar">
+    <method name="ClearAvatar" tp:name-for-bindings="Clear_Avatar">
       <tp:added version="0.15.0" />
       <tp:docstring>
         Remove the avatar image for this connection.
diff --git a/spec/Connection_Interface_Capabilities.xml b/spec/Connection_Interface_Capabilities.xml
index 95fbaaf..d577934 100644
--- a/spec/Connection_Interface_Capabilities.xml
+++ b/spec/Connection_Interface_Capabilities.xml
@@ -109,8 +109,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       <tp:member type="u" name="New_Type_Specific_Flags"/>
     </tp:struct>
 
-    <method name="AdvertiseCapabilities">
-      <arg direction="in" name="add" type="a(su)" tp:type="Capability_Pair[]">
+    <method name="AdvertiseCapabilities"
+      tp:name-for-bindings="Advertise_Capabilities">
+      <arg direction="in" name="Add" type="a(su)" tp:type="Capability_Pair[]">
         <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
           An array of structures containing:
           <ul>
@@ -119,7 +120,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
           </ul>
         </tp:docstring>
       </arg>
-      <arg direction="in" name="remove" type="as" tp:type="DBus_Interface[]">
+      <arg direction="in" name="Remove" type="as" tp:type="DBus_Interface[]">
         <tp:docstring>
           An array of D-Bus interface names of channel types to remove
         </tp:docstring>
@@ -158,8 +159,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:possible-errors>
     </method>
 
-    <signal name="CapabilitiesChanged">
-      <arg name="caps" type="a(usuuuu)" tp:type="Capability_Change[]">
+    <signal name="CapabilitiesChanged"
+      tp:name-for-bindings="Capabilities_Changed">
+      <arg name="Caps" type="a(usuuuu)" tp:type="Capability_Change[]">
         <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
           An array of structures containing:
           <ul>
@@ -182,8 +184,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </signal>
 
-    <method name="GetCapabilities">
-      <arg direction="in" name="handles" type="au" tp:type="Contact_Handle[]">
+    <method name="GetCapabilities" tp:name-for-bindings="Get_Capabilities">
+      <arg direction="in" name="Handles" type="au" tp:type="Contact_Handle[]">
         <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
           <p>An array of contact handles for this connection.</p>
 
diff --git a/spec/Connection_Interface_Contact_Info.xml b/spec/Connection_Interface_Contact_Info.xml
index 22cd507..4f8fd42 100644
--- a/spec/Connection_Interface_Contact_Info.xml
+++ b/spec/Connection_Interface_Contact_Info.xml
@@ -21,13 +21,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
   <interface name="org.freedesktop.Telepathy.Connection.Interface.ContactInfo"
     tp:causes-havoc='obsolete'>
     <tp:requires interface="org.freedesktop.Telepathy.Connection"/>
-    <signal name="GotContactInfo">
-      <arg name="contact" type="u" tp:type="Contact_Handle">
+    <signal name="GotContactInfo" tp:name-for-bindings="Got_Contact_Info">
+      <arg name="Contact" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           An integer handle of the contact ID on the server
         </tp:docstring>
       </arg>
-      <arg name="vcard" type="s">
+      <arg name="VCard" type="s">
         <tp:docstring>
           The XML string containing their vcard information
         </tp:docstring>
@@ -37,8 +37,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         the details of a particular contact.
       </tp:docstring>
     </signal>
-    <method name="RequestContactInfo">
-      <arg direction="in" name="contact" type="u" tp:type="Contact_Handle">
+    <method name="RequestContactInfo"
+      tp:name-for-bindings="Request_Contact_Info">
+      <arg direction="in" name="Contact" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           An integer handle for the contact to request info for
         </tp:docstring>
diff --git a/spec/Connection_Interface_Contacts.xml b/spec/Connection_Interface_Contacts.xml
index 3f5b5ea..590c339 100644
--- a/spec/Connection_Interface_Contacts.xml
+++ b/spec/Connection_Interface_Contacts.xml
@@ -128,7 +128,8 @@
     </tp:mapping>
 
     <property name="ContactAttributeInterfaces" access="read" type="as"
-      tp:type="DBus_Interface[]">
+      tp:type="DBus_Interface[]"
+      tp:name-for-bindings="Contact_Attribute_Interfaces">
       <tp:docstring>
         A list of D-Bus interfaces for which
         <tp:member-ref>GetContactAttributes</tp:member-ref> is expected to work.
@@ -136,7 +137,8 @@
       </tp:docstring>
     </property>
 
-    <method name="GetContactAttributes">
+    <method name="GetContactAttributes"
+      tp:name-for-bindings="Get_Contact_Attributes">
       <tp:docstring>
         Return any number of contact attributes for the given handles.
       </tp:docstring>
diff --git a/spec/Connection_Interface_Forwarding.xml b/spec/Connection_Interface_Forwarding.xml
index 6322fbc..73051f4 100644
--- a/spec/Connection_Interface_Forwarding.xml
+++ b/spec/Connection_Interface_Forwarding.xml
@@ -21,8 +21,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
   <interface name="org.freedesktop.Telepathy.Connection.Interface.Forwarding"
     tp:causes-havoc='not well-tested'>
     <tp:requires interface="org.freedesktop.Telepathy.Connection"/>
-    <signal name="ForwardingChanged">
-      <arg name="forward_to" type="u" tp:type="Contact_Handle">
+    <signal name="ForwardingChanged" tp:name-for-bindings="Forwarding_Changed">
+      <arg name="Forward_To" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           An integer contact handle to forward communication to
         </tp:docstring>
@@ -32,7 +32,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         changed. An zero handle indicates forwarding is disabled.
       </tp:docstring>
     </signal>
-    <method name="GetForwardingHandle">
+    <method name="GetForwardingHandle"
+      tp:name-for-bindings="Get_Forwarding_Handle">
       <arg direction="out" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           An integer contact handle to whom incoming communication is forwarded
@@ -47,8 +48,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"/>
       </tp:possible-errors>
     </method>
-    <method name="SetForwardingHandle">
-      <arg direction="in" name="forward_to" type="u" tp:type="Contact_Handle">
+    <method name="SetForwardingHandle"
+      tp:name-for-bindings="Set_Forwarding_Handle">
+      <arg direction="in" name="Forward_To" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           An integer contact handle to forward incoming communications to
         </tp:docstring>
diff --git a/spec/Connection_Interface_Presence.xml b/spec/Connection_Interface_Presence.xml
index 4ba59b6..58ad34e 100644
--- a/spec/Connection_Interface_Presence.xml
+++ b/spec/Connection_Interface_Presence.xml
@@ -63,13 +63,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       <tp:member type="(ubba{ss})" tp:type="Status_Spec" name="Spec"/>
     </tp:mapping>
 
-    <method name="AddStatus">
-      <arg direction="in" name="status" type="s">
+    <method name="AddStatus" tp:name-for-bindings="Add_Status">
+      <arg direction="in" name="Status" type="s">
         <tp:docstring>
           The string identifier of the desired status
         </tp:docstring>
       </arg>
-      <arg direction="in" name="parms" type="a{sv}" tp:type="String_Variant_Map">
+      <arg direction="in" name="Parameters" type="a{sv}" tp:type="String_Variant_Map">
         <tp:docstring>
           A dictionary of optional parameter names mapped to their variant-boxed values
         </tp:docstring>
@@ -87,7 +87,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.PermissionDenied"/>
       </tp:possible-errors>
     </method>
-    <method name="ClearStatus">
+    <method name="ClearStatus" tp:name-for-bindings="Clear_Status">
       <tp:docstring>
         Request that all of a user's presence statuses be removed. Be aware
         that this request may simply result in the statuses being replaced by a
@@ -100,13 +100,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.PermissionDenied"/>
       </tp:possible-errors>
     </method>
-    <method name="GetPresence">
-      <arg direction="in" name="contacts" type="au" tp:type="Contact_Handle[]">
+    <method name="GetPresence" tp:name-for-bindings="Get_Presence">
+      <arg direction="in" name="Contacts" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
           An array of the contacts whose presence should be obtained
         </tp:docstring>
       </arg>
-      <arg direction="out" name="presence" type="a{u(ua{sa{sv}})}"
+      <arg direction="out" name="Presence" type="a{u(ua{sa{sv}})}"
         tp:type="Contact_Presences">
         <tp:docstring>
           Presence information in the same format as for the PresenceUpdate
@@ -126,7 +126,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"/>
       </tp:possible-errors>
     </method>
-    <method name="GetStatuses">
+    <method name="GetStatuses" tp:name-for-bindings="Get_Statuses">
       <arg direction="out" type="a{s(ubba{ss})}" tp:type="Status_Spec_Map">
         <tp:docstring>
         A dictionary of string identifiers mapped to a struct for each status, containing:
@@ -148,8 +148,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
       </tp:possible-errors>
     </method>
-    <signal name="PresenceUpdate">
-      <arg name="presence" type="a{u(ua{sa{sv}})}" tp:type="Contact_Presences">
+    <signal name="PresenceUpdate" tp:name-for-bindings="Presence_Update">
+      <arg name="Presence" type="a{u(ua{sa{sv}})}" tp:type="Contact_Presences">
         <tp:docstring>
         A dictionary of contact handles mapped to a struct containing
         a UNIX timestamp of the last activity time (in UTC), and
@@ -165,8 +165,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
 
       </tp:docstring>
     </signal>
-    <method name="RemoveStatus">
-      <arg direction="in" name="status" type="s">
+    <method name="RemoveStatus" tp:name-for-bindings="Remove_Status">
+      <arg direction="in" name="Status" type="s">
         <tp:docstring>
           The string identifier of the status not to publish anymore for the user
         </tp:docstring>
@@ -186,8 +186,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         </tp:error>
       </tp:possible-errors>
     </method>
-    <method name="RequestPresence">
-      <arg direction="in" name="contacts" type="au" tp:type="Contact_Handle[]">
+    <method name="RequestPresence" tp:name-for-bindings="Request_Presence">
+      <arg direction="in" name="Contacts" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
           An array of the contacts whose presence should be obtained
         </tp:docstring>
@@ -211,8 +211,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         </tp:error>
       </tp:possible-errors>
     </method>
-    <method name="SetLastActivityTime">
-      <arg direction="in" name="time" type="u" tp:type="Unix_Timestamp">
+    <method name="SetLastActivityTime"
+      tp:name-for-bindings="Set_Last_Activity_Time">
+      <arg direction="in" name="Time" type="u" tp:type="Unix_Timestamp">
         <tp:docstring>
           A UNIX timestamp of the user's last activity time (in UTC)
         </tp:docstring>
@@ -231,8 +232,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         </tp:error>
       </tp:possible-errors>
     </method>
-    <method name="SetStatus">
-      <arg direction="in" name="statuses" type="a{sa{sv}}" tp:type="Multiple_Status_Map">
+    <method name="SetStatus" tp:name-for-bindings="Set_Status">
+      <arg direction="in" name="Statuses" type="a{sa{sv}}" tp:type="Multiple_Status_Map">
         <tp:docstring>
           A dictionary mapping status identifiers to dictionaries, which
           map optional parameter names to their variant-boxed values
diff --git a/spec/Connection_Interface_Privacy.xml b/spec/Connection_Interface_Privacy.xml
index 8654736..b89d968 100644
--- a/spec/Connection_Interface_Privacy.xml
+++ b/spec/Connection_Interface_Privacy.xml
@@ -21,7 +21,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
   <interface name="org.freedesktop.Telepathy.Connection.Interface.Privacy"
     tp:causes-havoc='not well-tested'>
     <tp:requires interface="org.freedesktop.Telepathy.Connection"/>
-    <method name="GetPrivacyMode">
+    <method name="GetPrivacyMode" tp:name-for-bindings="Get_Privacy_Mode">
       <arg direction="out" type="s">
         <tp:docstring>
           A string representing the current privacy mode
@@ -36,7 +36,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
       </tp:possible-errors>
     </method>
-    <method name="GetPrivacyModes">
+    <method name="GetPrivacyModes" tp:name-for-bindings="Get_Privacy_Modes">
       <arg direction="out" type="as">
         <tp:docstring>
           An array of valid privacy modes for this connection
@@ -52,8 +52,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
          </dl>
        </tp:docstring>
     </method>
-    <signal name="PrivacyModeChanged">
-      <arg name="mode" type="s">
+    <signal name="PrivacyModeChanged"
+      tp:name-for-bindings="Privacy_Mode_Changed">
+      <arg name="Mode" type="s">
         <tp:docstring>
           The current privacy mode
         </tp:docstring>
@@ -63,8 +64,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         initially received from the server.
       </tp:docstring>
     </signal>
-    <method name="SetPrivacyMode">
-      <arg direction="in" name="mode" type="s">
+    <method name="SetPrivacyMode" tp:name-for-bindings="Set_Privacy_Mode">
+      <arg direction="in" name="Mode" type="s">
         <tp:docstring>
           The desired privacy mode
         </tp:docstring>
diff --git a/spec/Connection_Interface_Renaming.xml b/spec/Connection_Interface_Renaming.xml
index 2c4e272..9981184 100644
--- a/spec/Connection_Interface_Renaming.xml
+++ b/spec/Connection_Interface_Renaming.xml
@@ -21,13 +21,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
   <interface name="org.freedesktop.Telepathy.Connection.Interface.Renaming"
     tp:causes-havoc='not well-tested'>
     <tp:requires interface="org.freedesktop.Telepathy.Connection"/>
-    <signal name="Renamed">
-      <arg name="original" type="u" tp:type="Contact_Handle">
+    <signal name="Renamed" tp:name-for-bindings="Renamed">
+      <arg name="Original" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           The handle of the original identifier
         </tp:docstring>
       </arg>
-      <arg name="new" type="u" tp:type="Contact_Handle">
+      <arg name="New" type="u" tp:type="Contact_Handle">
         <tp:docstring>
           The handle of the new identifier
         </tp:docstring>
@@ -61,8 +61,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         </p>
       </tp:docstring>
     </signal>
-    <method name="RequestRename">
-      <arg direction="in" name="name" type="s">
+    <method name="RequestRename" tp:name-for-bindings="Request_Rename">
+      <arg direction="in" name="Name" type="s">
         <tp:docstring>
           The desired identifier
         </tp:docstring>
diff --git a/spec/Connection_Interface_Requests.xml b/spec/Connection_Interface_Requests.xml
index ea1eeeb..932c4a6 100644
--- a/spec/Connection_Interface_Requests.xml
+++ b/spec/Connection_Interface_Requests.xml
@@ -94,7 +94,7 @@
       </tp:member>
     </tp:struct>
 
-    <method name="CreateChannel">
+    <method name="CreateChannel" tp:name-for-bindings="Create_Channel">
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>Request that channels are created.</p>
 
@@ -200,7 +200,7 @@
       </tp:possible-errors>
     </method>
 
-    <signal name="NewChannels">
+    <signal name="NewChannels" tp:name-for-bindings="New_Channels">
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>New channels have been created. The connection manager SHOULD emit
           a single signal for any group of closely related channels that are
@@ -230,8 +230,8 @@
       </arg>
     </signal>
 
-    <property name="Channels" type="a(oa{sv})" access="read"
-      tp:type="Channel_Details[]">
+    <property name="Channels" tp:name-for-bindings="Channels"
+      type="a(oa{sv})" access="read" tp:type="Channel_Details[]">
       <tp:docstring>
         A list of all the channels which currently exist on this connection.
         Change notification is via the
@@ -240,7 +240,7 @@
       </tp:docstring>
     </property>
 
-    <signal name="ChannelClosed">
+    <signal name="ChannelClosed" tp:name-for-bindings="Channel_Closed">
       <tp:docstring>
         Emitted when a channel is closed and hence disappears from the
         Channels property.
@@ -371,7 +371,8 @@
     </tp:struct>
 
     <property name="RequestableChannelClasses" access="read"
-      type="a(a{sv}as)" tp:type="Requestable_Channel_Class[]">
+      type="a(a{sv}as)" tp:type="Requestable_Channel_Class[]"
+      tp:name-for-bindings="Requestable_Channel_Classes">
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>The classes of channel that are expected to be available on this
           connection, i.e. those for which
diff --git a/spec/Connection_Interface_Simple_Presence.xml b/spec/Connection_Interface_Simple_Presence.xml
index 56ac9d3..92614e0 100644
--- a/spec/Connection_Interface_Simple_Presence.xml
+++ b/spec/Connection_Interface_Simple_Presence.xml
@@ -55,8 +55,8 @@
             translation of "Available" from a menu.
             It is more informative for his English-speaking colleagues
             to see the English translation of "Available" (as localized
-            by their own clients) than to see the Welsh version (which they
-            don't understand anyway).
+            by their own clients) than to see "Ar Gael" (which they don't
+            understand anyway).
           </tp:rationale>
         </tp:docstring>
       </tp:member>
@@ -129,8 +129,8 @@
       </tp:member>
     </tp:mapping>
 
-    <method name="SetPresence">
-      <arg direction="in" name="status" type="s">
+    <method name="SetPresence" tp:name-for-bindings="Set_Presence">
+      <arg direction="in" name="Status" type="s">
         <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
           <p>The string identifier of the desired status. Possible status
             identifiers are defined in the
@@ -153,7 +153,7 @@
           </tp:rationale>
         </tp:docstring>
       </arg>
-      <arg direction="in" name="status_message" type="s">
+      <arg direction="in" name="Status_Message" type="s">
         <tp:docstring>
           The status message associated with the current status.
         </tp:docstring>
@@ -189,13 +189,13 @@
       </tp:possible-errors>
     </method>
 
-    <method name="GetPresences">
-      <arg direction="in" name="contacts" type="au" tp:type="Contact_Handle[]">
+    <method name="GetPresences" tp:name-for-bindings="Get_Presences">
+      <arg direction="in" name="Contacts" type="au" tp:type="Contact_Handle[]">
         <tp:docstring>
           An array of the contacts whose presence should be obtained.
         </tp:docstring>
       </arg>
-      <arg direction="out" name="presence" type="a{u(uss)}"
+      <arg direction="out" name="Presence" type="a{u(uss)}"
         tp:type="Simple_Contact_Presences">
         <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
           <p>Presence information in the same format as for the
@@ -228,7 +228,7 @@
       </tp:possible-errors>
     </method>
 
-    <property name="Statuses" access="read"
+    <property name="Statuses" tp:name-for-bindings="Statuses" access="read"
       type="a{s(ubb)}" tp:type="Simple_Status_Spec_Map">
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>A dictionary where the keys are the presence statuses that the user
@@ -265,8 +265,8 @@
       </tp:docstring>
     </property>
 
-    <signal name="PresencesChanged">
-      <arg name="presence" type="a{u(uss)}" tp:type="Simple_Contact_Presences">
+    <signal name="PresencesChanged" tp:name-for-bindings="Presences_Changed">
+      <arg name="Presence" type="a{u(uss)}" tp:type="Simple_Contact_Presences">
         <tp:docstring>
           A dictionary of contact handles mapped to the status,
           presence type and status message.
diff --git a/spec/Connection_Manager.xml b/spec/Connection_Manager.xml
index 33f1ede..e3cfa8d 100644
--- a/spec/Connection_Manager.xml
+++ b/spec/Connection_Manager.xml
@@ -140,8 +140,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:flag>
     </tp:flags>
 
-    <method name="GetParameters">
-      <arg direction="in" name="proto" type="s" tp:type="Protocol">
+    <method name="GetParameters" tp:name-for-bindings="Get_Parameters">
+      <arg direction="in" name="Protocol" type="s" tp:type="Protocol">
         <tp:docstring>
           The required protocol name
         </tp:docstring>
@@ -164,7 +164,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:possible-errors>
     </method>
 
-    <method name="ListProtocols">
+    <method name="ListProtocols" tp:name-for-bindings="List_Protocols">
       <arg direction="out" type="as" tp:type="Protocol[]">
         <tp:docstring>
           A array of string protocol identifiers supported by this manager
@@ -176,18 +176,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </method>
 
-    <signal name="NewConnection">
-      <arg name="bus_name" type="s" tp:type="DBus_Bus_Name">
+    <signal name="NewConnection" tp:name-for-bindings="New_Connection">
+      <arg name="Bus_Name" type="s" tp:type="DBus_Bus_Name">
         <tp:docstring>
           The D-Bus service where the connection object can be found
         </tp:docstring>
       </arg>
-      <arg name="object_path" type="o">
+      <arg name="Object_Path" type="o">
         <tp:docstring>
           The object path of the Connection object on this service
         </tp:docstring>
       </arg>
-      <arg name="proto" type="s" tp:type="Protocol">
+      <arg name="Protocol" type="s" tp:type="Protocol">
         <tp:docstring>
           The identifier for the protocol this connection uses
         </tp:docstring>
@@ -197,13 +197,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </signal>
 
-    <method name="RequestConnection">
-      <arg direction="in" name="proto" type="s" tp:type="Protocol">
+    <method name="RequestConnection" tp:name-for-bindings="Request_Connection">
+      <arg direction="in" name="Protocol" type="s" tp:type="Protocol">
         <tp:docstring>
           The protocol identifier
         </tp:docstring>
       </arg>
-      <arg direction="in" name="parameters" type="a{sv}"
+      <arg direction="in" name="Parameters" type="a{sv}"
         tp:type="String_Variant_Map">
         <tp:docstring>
           A dictionary mapping parameter name to the variant boxed value
@@ -220,39 +220,16 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         </tp:docstring>
       </arg>
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-        <p>Request a Connection object representing a given account on a given
-        protocol with the given parameters. The method returns the bus name
-        and the object path where the new Connection object can be found, which
-        should have the status of Connection_Status_Disconnected, to allow
-        signal handlers to be attached before connecting is started with the
-        Connect method.</p>
-
-        <p>In order to allow Connection objects to be discovered by new clients,
-        the object path and well-known bus name must be of the form
-        <code>/org/freedesktop/Telepathy/Connection/cmname/proto/account</code>
-        and
-        <code>org.freedesktop.Telepathy.Connection.cmname.proto.account</code>
-        where:</p>
-
-        <ul>
-          <li><em>cmname</em> is the same connection manager name that appears
-            in the connection manager's object path and well-known bus name</li>
-          <li><em>proto</em> is the protocol name as seen in
-            ListProtocols, but with "-" replaced with "_" to get a valid
-            object path/bus name</li>
-          <li><em>account</em> SHOULD be a series of elements formed such that
-            any valid distinct connection instance on this protocol has a
-            distinct name; this might be formed by including the server name
-            followed by the user name (escaped via some suitable mechanism like
-            telepathy-glib's tp_escape_as_identifier() function to preserve
-            uniqueness), or on protocols where connecting multiple times
-            is permissable, a per-connection identifier might be necessary to
-            ensure uniqueness</li>
-        </ul>
-
-        <p>Clients MUST NOT attempt to parse the <em>account</em> part of the
-          bus name. Connection managers MAY use any unique string for this
-          part.</p>
+        <p>Request a
+          <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection</tp:dbus-ref>
+          object representing a given account on a given
+          protocol with the given parameters. The method returns the bus name
+          and the object path where the new Connection object can be found,
+          which should have the status of Connection_Status_Disconnected, to
+          allow signal handlers to be attached before connecting is started
+          with the
+          <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection">Connect</tp:dbus-ref>
+          method.</p>
 
         <p>The parameters which must and may be provided in the parameters
         dictionary can be discovered with the GetParameters method. These
@@ -320,7 +297,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:possible-errors>
     </method>
 
-    <property name="Interfaces" type="as" access="read">
+    <property name="Interfaces" tp:name-for-bindings="Interfaces"
+      type="as" access="read">
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>A list of the extra interfaces provided by this connection manager
           (i.e. extra functionality that can be provided even before a
diff --git a/spec/Media_Session_Handler.xml b/spec/Media_Session_Handler.xml
index b4e9ffb..a6cf519 100644
--- a/spec/Media_Session_Handler.xml
+++ b/spec/Media_Session_Handler.xml
@@ -19,9 +19,10 @@ License along with this library; if not, write to the Free Software
 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</p>
   </tp:license>
   <interface name="org.freedesktop.Telepathy.Media.SessionHandler">
-    <method name="Error">
-      <arg direction="in" name="errno" type="u"/>
-      <arg direction="in" name="message" type="s"/>
+    <method name="Error" tp:name-for-bindings="Error">
+      <arg direction="in" name="Error_Code" type="u"
+        tp:type="Media_Stream_Error"/>
+      <arg direction="in" name="Message" type="s"/>
       <tp:docstring>
         THIS METHOD IS DEPRECATED AND SHOULD NOT BE USED. Instead the Error
         function should be used on the relevant MediaStreamHandler objects.
@@ -31,24 +32,24 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         channel for each stream within the session.
       </tp:docstring>
     </method>
-    <signal name="NewStreamHandler">
-      <arg name="stream_handler" type="o">
+    <signal name="NewStreamHandler" tp:name-for-bindings="New_Stream_Handler">
+      <arg name="Stream_Handler" type="o">
         <tp:docstring>
           An object path to a new MediaStreamHandler
         </tp:docstring>
       </arg>
-      <arg name="id" type="u">
+      <arg name="ID" type="u">
         <tp:docstring>
           The unique ID of the new stream
         </tp:docstring>
       </arg>
-      <arg name="media_type" type="u" tp:type="Media_Stream_Type">
+      <arg name="Media_Type" type="u" tp:type="Media_Stream_Type">
         <tp:docstring>
           Enum for type of media that this stream should handle
           (a value from MediaStreamType)
         </tp:docstring>
       </arg>
-      <arg name="direction" type="u" tp:type="Media_Stream_Direction">
+      <arg name="Direction" type="u" tp:type="Media_Stream_Direction">
         <tp:docstring>
           Enum for direction of this stream (a value from
           MediaStreamDirection)
@@ -59,7 +60,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         session.
       </tp:docstring>
     </signal>
-    <method name="Ready">
+    <method name="Ready" tp:name-for-bindings="Ready">
       <tp:docstring>
         Inform the connection manager that a client is ready to handle
         this session handler (i.e. that it has connected to the
diff --git a/spec/Media_Stream_Handler.xml b/spec/Media_Stream_Handler.xml
index 7d69463..e476479 100644
--- a/spec/Media_Stream_Handler.xml
+++ b/spec/Media_Stream_Handler.xml
@@ -52,13 +52,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       <tp:member type="a{ss}" name="Parameters" tp:type="String_String_Map"/>
     </tp:struct>
 
-    <signal name="AddRemoteCandidate">
-      <arg name="candidate_id" type="s">
+    <signal name="AddRemoteCandidate"
+      tp:name-for-bindings="Add_Remote_Candidate">
+      <arg name="Candidate_ID" type="s">
         <tp:docstring>
           String identifier for this candidate
         </tp:docstring>
       </arg>
-      <arg name="transports" type="a(usuussduss)"
+      <arg name="Transports" type="a(usuussduss)"
         tp:type="Media_Stream_Handler_Transport[]">
         <tp:docstring>
           Array of transports for this candidate with fields,
@@ -70,25 +71,25 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         client of a new remote candidate.
       </tp:docstring>
     </signal>
-    <signal name="Close">
+    <signal name="Close" tp:name-for-bindings="Close">
       <tp:docstring>
         Signal emitted when the connection manager wishes the stream to be
         closed.
       </tp:docstring>
     </signal>
-    <method name="CodecChoice">
-      <arg direction="in" name="codec_id" type="u"/>
+    <method name="CodecChoice" tp:name-for-bindings="Codec_Choice">
+      <arg direction="in" name="Codec_ID" type="u"/>
       <tp:docstring>
         Inform the connection manager of the current codec choice.
       </tp:docstring>
     </method>
-    <method name="Error">
-      <arg direction="in" name="errno" type="u" tp:type="Media_Stream_Error">
+    <method name="Error" tp:name-for-bindings="Error">
+      <arg direction="in" name="Error_Code" type="u" tp:type="Media_Stream_Error">
         <tp:docstring>
           ID of error, from the MediaStreamError enumeration
         </tp:docstring>
       </arg>
-      <arg direction="in" name="message" type="s">
+      <arg direction="in" name="Message" type="s">
         <tp:docstring>
           String describing the error
         </tp:docstring>
@@ -111,15 +112,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         </tp:docstring>
       </tp:enumvalue>
     </tp:enum>
-    <method name="NativeCandidatesPrepared">
+    <method name="NativeCandidatesPrepared"
+      tp:name-for-bindings="Native_Candidates_Prepared">
       <tp:docstring>
         Informs the connection manager that all possible native candisates
         have been discovered for the moment.
       </tp:docstring>
     </method>
-    <method name="NewActiveCandidatePair">
-      <arg direction="in" name="native_candidate_id" type="s"/>
-      <arg direction="in" name="remote_candidate_id" type="s"/>
+    <method name="NewActiveCandidatePair"
+      tp:name-for-bindings="New_Active_Candidate_Pair">
+      <arg direction="in" name="Native_Candidate_ID" type="s"/>
+      <arg direction="in" name="Remote_Candidate_ID" type="s"/>
       <tp:docstring>
         Informs the connection manager that a valid candidate pair
         has been discovered and streaming is in progress.
@@ -133,13 +136,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         <tp:docstring>TCP (Transmission Control Protocol)</tp:docstring>
       </tp:enumvalue>
     </tp:enum>
-    <method name="NewNativeCandidate">
-      <arg direction="in" name="candidate_id" type="s">
+    <method name="NewNativeCandidate"
+      tp:name-for-bindings="New_Native_Candidate">
+      <arg direction="in" name="Candidate_ID" type="s">
         <tp:docstring>
           String identifier for this candidate
         </tp:docstring>
       </arg>
-      <arg direction="in" name="transports" type="a(usuussduss)"
+      <arg direction="in" name="Transports" type="a(usuussduss)"
         tp:type="Media_Stream_Handler_Transport[]">
         <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
           Array of transports for this candidate, with fields:
@@ -180,8 +184,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         </tp:docstring>
       </tp:enumvalue>
     </tp:enum>
-    <method name="Ready">
-      <arg direction="in" name="codecs" type="a(usuuua{ss})"
+    <method name="Ready" tp:name-for-bindings="Ready">
+      <arg direction="in" name="Codecs" type="a(usuuua{ss})"
         tp:type="Media_Stream_Handler_Codec[]">
         <tp:docstring>
           As for SupportedCodecs.
@@ -193,8 +197,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         codecs.
       </tp:docstring>
     </method>
-    <method name="SetLocalCodecs">
-      <arg name="codecs" type="a(usuuua{ss})" direction="in"
+    <method name="SetLocalCodecs" tp:name-for-bindings="Set_Local_Codecs">
+      <arg name="Codecs" type="a(usuuua{ss})" direction="in"
         tp:type="Media_Stream_Handler_Codec[]">
         <tp:docstring>Codecs in the same format as for
           SupportedCodecs, which have the same semantics as the
@@ -206,8 +210,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         knowing what local codecs are available.
       </tp:docstring>
     </method>
-    <signal name="RemoveRemoteCandidate">
-      <arg name="candidate_id" type="s">
+    <signal name="RemoveRemoteCandidate"
+      tp:name-for-bindings="Remove_Remote_Candidate">
+      <arg name="Candidate_ID" type="s">
         <tp:docstring>
           String identifier for remote candidate to drop
         </tp:docstring>
@@ -218,17 +223,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         candidate.
       </tp:docstring>
     </signal>
-    <signal name="SetActiveCandidatePair">
-      <arg name="native_candidate_id" type="s"/>
-      <arg name="remote_candidate_id" type="s"/>
+    <signal name="SetActiveCandidatePair"
+      tp:name-for-bindings="Set_Active_Candidate_Pair">
+      <arg name="Native_Candidate_ID" type="s"/>
+      <arg name="Remote_Candidate_ID" type="s"/>
       <tp:docstring>
         Emitted by the connection manager to inform the client that a
         valid candidate pair has been discovered by the remote end
         and streaming is in progress.
       </tp:docstring>
     </signal>
-    <signal name="SetRemoteCandidateList">
-      <arg name="remote_candidates" type="a(sa(usuussduss))"
+    <signal name="SetRemoteCandidateList"
+      tp:name-for-bindings="Set_Remote_Candidate_List">
+      <arg name="Remote_Candidates" type="a(sa(usuussduss))"
         tp:type="Media_Stream_Handler_Candidate[]">
         <tp:docstring>
         A list of candidate id and a list of transports
@@ -240,8 +247,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         client of all the available remote candidates at once.
       </tp:docstring>
     </signal>
-    <signal name="SetRemoteCodecs">
-      <arg name="codecs" type="a(usuuua{ss})"
+    <signal name="SetRemoteCodecs" tp:name-for-bindings="Set_Remote_Codecs">
+      <arg name="Codecs" type="a(usuuua{ss})"
         tp:type="Media_Stream_Handler_Codec[]">
         <tp:docstring>As for SupportedCodecs</tp:docstring>
       </arg>
@@ -250,22 +257,23 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         client of the codecs supported by the remote end.
       </tp:docstring>
     </signal>
-    <signal name="SetStreamPlaying">
-      <arg name="playing" type="b"/>
+    <signal name="SetStreamPlaying" tp:name-for-bindings="Set_Stream_Playing">
+      <arg name="Playing" type="b"/>
       <tp:docstring>
         Signal emitted when the connection manager wishes to set the
         stream playing or stopped.
       </tp:docstring>
     </signal>
-    <signal name="SetStreamSending">
-      <arg name="sending" type="b"/>
+    <signal name="SetStreamSending" tp:name-for-bindings="Set_Stream_Sending">
+      <arg name="Sending" type="b"/>
       <tp:docstring>
         Signal emitted when the connection manager wishes to set whether or not
         the stream sends to the remote end.
       </tp:docstring>
     </signal>
-    <signal name="StartTelephonyEvent">
-      <arg name="event" type="y">
+    <signal name="StartTelephonyEvent"
+      tp:name-for-bindings="Start_Telephony_Event">
+      <arg name="Event" type="y">
         <tp:docstring>
           A telephony event code as defined by RFC 4733.
         </tp:docstring>
@@ -275,21 +283,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         over this stream until StopTelephonyEvent is called.
       </tp:docstring>
     </signal>
-    <signal name="StopTelephonyEvent">
+    <signal name="StopTelephonyEvent"
+      tp:name-for-bindings="Stop_Telephony_Event">
       <tp:docstring>
         Request that any ongoing telephony events (as defined by RFC 4733)
         being transmitted over this stream are stopped.
       </tp:docstring>
     </signal>
-    <method name="StreamState">
-      <arg direction="in" name="state" type="u" tp:type="Media_Stream_State"/>
+    <method name="StreamState" tp:name-for-bindings="Stream_State">
+      <arg direction="in" name="State" type="u" tp:type="Media_Stream_State"/>
       <tp:docstring>
         Informs the connection manager of the stream's current state, as
         as specified in Channel.Type.StreamedMedia::ListStreams.
       </tp:docstring>
     </method>
-    <method name="SupportedCodecs">
-      <arg direction="in" name="codecs" type="a(usuuua{ss})"
+    <method name="SupportedCodecs" tp:name-for-bindings="Supported_Codecs">
+      <arg direction="in" name="Codecs" type="a(usuuua{ss})"
         tp:type="Media_Stream_Handler_Codec[]">
         <tp:docstring>
           List of codec info structures, each containing:
@@ -312,7 +321,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </method>
 
-    <signal name="SetStreamHeld">
+    <signal name="SetStreamHeld" tp:name-for-bindings="Set_Stream_Held">
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>Emitted when the connection manager wishes to place the stream on
           hold (so the streaming client should free hardware or software
@@ -347,7 +356,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </arg>
     </signal>
 
-    <method name="HoldState">
+    <method name="HoldState" tp:name-for-bindings="Hold_State">
       <tp:docstring>
         Notify the connection manager that the stream's hold state has
         been changed successfully in response to SetStreamHeld.
@@ -360,7 +369,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </arg>
     </method>
 
-    <method name="UnholdFailure">
+    <method name="UnholdFailure" tp:name-for-bindings="Unhold_Failure">
       <tp:docstring>
         Notify the connection manager that an attempt to reacquire the
         necessary hardware or software resources to unhold the stream,
diff --git a/spec/Properties_Interface.xml b/spec/Properties_Interface.xml
index fa78f20..2773d75 100644
--- a/spec/Properties_Interface.xml
+++ b/spec/Properties_Interface.xml
@@ -25,8 +25,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         flags) representing a property, as returned by ListProperties on the
         Properties interface.</tp:docstring>
       <tp:member type="u" name="Property_ID"/>
-      <tp:member type="s" name="name"/>
-      <tp:member type="s" tp:type="DBus_Signature" name="signature"/>
+      <tp:member type="s" name="Name"/>
+      <tp:member type="s" tp:type="DBus_Signature" name="Signature"/>
       <tp:member type="u" tp:type="Property_Flags" name="Flags"/>
     </tp:struct>
 
@@ -54,12 +54,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       <tp:member type="v" name="Value"/>
     </tp:struct>
 
-    <method name="GetProperties">
+    <method name="GetProperties" tp:name-for-bindings="Get_Properties">
       <tp:docstring>
         Returns an array of (identifier, value) pairs containing the current
         values of the given properties.
       </tp:docstring>
-      <arg direction="in" name="properties" type="au" tp:type="Property_ID[]">
+      <arg direction="in" name="Properties" type="au" tp:type="Property_ID[]">
         <tp:docstring>An array of property identifiers</tp:docstring>
       </arg>
       <arg direction="out" type="a(uv)" tp:type="Property_Value[]">
@@ -86,7 +86,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         </tp:error>
       </tp:possible-errors>
     </method>
-    <method name="ListProperties">
+    <method name="ListProperties" tp:name-for-bindings="List_Properties">
       <tp:docstring>
         Returns a dictionary of the properties available on this channel.
       </tp:docstring>
@@ -104,11 +104,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         </tp:docstring>
       </arg>
     </method>
-    <signal name="PropertiesChanged">
+    <signal name="PropertiesChanged" tp:name-for-bindings="Properties_Changed">
       <tp:docstring>
         Emitted when the value of readable properties has changed.
       </tp:docstring>
-      <arg name="properties" type="a(uv)" tp:type="Property_Value[]">
+      <arg name="Properties" type="a(uv)" tp:type="Property_Value[]">
         <!-- XXX: if we're ever breaking API compatibility, make this a{uv} -->
         <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
           <p>An array of structs containing:</p>
@@ -121,11 +121,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         </tp:docstring>
       </arg>
     </signal>
-    <signal name="PropertyFlagsChanged">
+    <signal name="PropertyFlagsChanged"
+      tp:name-for-bindings="Property_Flags_Changed">
       <tp:docstring>
         Emitted when the flags of some room properties have changed.
       </tp:docstring>
-      <arg name="properties" type="a(uu)" tp:type="Property_Flags_Change[]">
+      <arg name="Properties" type="a(uu)" tp:type="Property_Flags_Change[]">
         <!-- XXX: if we're ever breaking API compatibility, make this a{uu} -->
         <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
           <p>An array of structs containing:</p>
@@ -138,7 +139,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         </tp:docstring>
       </arg>
     </signal>
-    <method name="SetProperties">
+    <method name="SetProperties" tp:name-for-bindings="Set_Properties">
       <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
         <p>Takes an array of (identifier, value) pairs containing desired
           values to set the given properties. In the case of any errors, no
@@ -151,7 +152,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         are invalid, InvalidArgument will be returned.</p>
       </tp:docstring>
 
-      <arg direction="in" name="properties" type="a(uv)"
+      <arg direction="in" name="Properties" type="a(uv)"
         tp:type="Property_Value[]">
         <!-- XXX: if we're ever breaking API compatibility, make this a{uv} -->
       <tp:docstring>
diff --git a/spec/all.xml b/spec/all.xml
index eda2e01..6631903 100644
--- a/spec/all.xml
+++ b/spec/all.xml
@@ -3,7 +3,7 @@
   xmlns:xi="http://www.w3.org/2001/XInclude">
 
 <tp:title>Telepathy D-Bus Interface Specification</tp:title>
-<tp:version>0.17.9</tp:version>
+<tp:version>0.17.10</tp:version>
 
 <tp:copyright>Copyright (C) 2005-2008 Collabora Limited</tp:copyright>
 <tp:copyright>Copyright (C) 2005-2008 Nokia Corporation</tp:copyright>
diff --git a/spec/generic-types.xml b/spec/generic-types.xml
index c0a000d..480b2c9 100644
--- a/spec/generic-types.xml
+++ b/spec/generic-types.xml
@@ -2,7 +2,19 @@
   xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
 
   <tp:simple-type name="Unix_Timestamp" type="u">
-    <tp:docstring>An unsigned 32-bit integer representing time since 1970</tp:docstring>
+    <tp:docstring>An unsigned 32-bit integer representing time as the number
+      of seconds elapsed since the Unix epoch
+      (1970-01-01T00:00:00Z)</tp:docstring>
+  </tp:simple-type>
+
+  <tp:simple-type name="Unix_Timestamp64" type="t">
+    <tp:docstring>An unsigned 64-bit integer representing time as the number
+      of seconds elapsed since the Unix epoch
+      (1970-01-01T00:00:00Z)</tp:docstring>
+
+    <tp:rationale>The Text interface is the only user of Unix_Timestamp so
+      far, and we'd like to be Y2038 compatible in future
+      interfaces.</tp:rationale>
   </tp:simple-type>
 
   <tp:simple-type name="DBus_Bus_Name" type="s">
@@ -11,6 +23,11 @@
       like ":1.123"</tp:docstring>
   </tp:simple-type>
 
+  <tp:simple-type name="DBus_Well_Known_Name" type="s">
+    <tp:docstring>A string representing a D-Bus well-known
+      name like "org.freedesktop.Telepathy.MissionControl".</tp:docstring>
+  </tp:simple-type>
+
   <tp:simple-type name="DBus_Unique_Name" type="s">
     <tp:docstring>A string representing a D-Bus unique name, such as
       ":1.123"</tp:docstring>
@@ -24,6 +41,12 @@
       "org.freedesktop.DBus.Peer".</tp:docstring>
   </tp:simple-type>
 
+  <tp:simple-type name="DBus_Error_Name" type="s">
+    <tp:docstring>An ASCII string representing a D-Bus error. This is
+      syntactically the same as a <tp:type>DBus_Interface</tp:type>, but the
+      meaning is different.</tp:docstring>
+  </tp:simple-type>
+
   <tp:simple-type name="DBus_Signature" type="s">
     <tp:docstring>A string representing a D-Bus signature
       (the 'g' type isn't used because of poor interoperability, particularly
-- 
1.5.6.3



More information about the Telepathy-commits mailing list