   #--------
   
   _v_sign_subkey : ({asp, subkey}, cb) ->
-    arg = 
-      primary : @primary._pgp, 
-      lifespan : subkey.lifespan
-    await subkey._pgp.sign_primary arg, defer err, primary_binding
-    unless err?
-      arg.subkey = subkey._pgp
-      arg.primary_binding = primary_binding
-      await @primary._pgp.sign_subkey arg, defer err, sig
-    subkey._pgp_sig = sig    
+    await @primary._pgp.sign_subkey { subkey : subkey._pgp, lifespan : subkey.lifespan }, defer err, sig
+    subkey._pgp_sig = sig
     cb err
 
   #--------

  
  _v_allocate_key_packet : (key) ->
    key._pgp = new opkts.KeyMaterial { key : key.key, timestamp : key.lifespan.generated, userid : @userids.get_keybase() }

  #--------
  

  #------------
 
  # Start from an armored PGP PUBLIC KEY BLOCK, and parse it into packets.
  @import_from_armored_pgp_public : ({raw, asp, userid}, cb) ->
    [err,msg] = decode raw
    bundle = null
    unless err?
