| Index: service/datastore/multiarg.go
 | 
| diff --git a/service/datastore/multiarg.go b/service/datastore/multiarg.go
 | 
| index cc1a6726510f6817887f6539a42ba276c780e78b..ad141d3db7bd4c88becbdeb6682d89531df7bc53 100644
 | 
| --- a/service/datastore/multiarg.go
 | 
| +++ b/service/datastore/multiarg.go
 | 
| @@ -258,23 +258,45 @@ func multiArgTypeInterface() multiArgType {
 | 
|  
 | 
|  func newKeyObjErr(aid, ns string, src interface{}) (*Key, error) {
 | 
|  	pls := getMGS(src)
 | 
| -	if key, _ := pls.GetMetaDefault("key", nil).(*Key); key != nil {
 | 
| +	keyI, err := GetMetaDefault(pls, "key", nil)
 | 
| +	if err != nil {
 | 
| +		return nil, err
 | 
| +	}
 | 
| +	if key, _ := keyI.(*Key); key != nil {
 | 
|  		return key, nil
 | 
|  	}
 | 
|  
 | 
|  	// get kind
 | 
| -	kind := pls.GetMetaDefault("kind", "").(string)
 | 
| +	kindI, err := GetMetaDefault(pls, "kind", "")
 | 
| +	if err != nil {
 | 
| +		return nil, err
 | 
| +	}
 | 
| +
 | 
| +	kind, _ := kindI.(string)
 | 
|  	if kind == "" {
 | 
|  		return nil, fmt.Errorf("unable to extract $kind from %T", src)
 | 
|  	}
 | 
|  
 | 
|  	// get id - allow both to be default for default keys
 | 
| -	sid := pls.GetMetaDefault("id", "").(string)
 | 
| -	iid := pls.GetMetaDefault("id", 0).(int64)
 | 
| +	sidI, err := GetMetaDefault(pls, "id", "")
 | 
| +	if err != nil {
 | 
| +		return nil, err
 | 
| +	}
 | 
| +
 | 
| +	iidI, err := GetMetaDefault(pls, "id", 0)
 | 
| +	if err != nil {
 | 
| +		return nil, err
 | 
| +	}
 | 
|  
 | 
|  	// get parent
 | 
| -	par, _ := pls.GetMetaDefault("parent", nil).(*Key)
 | 
| +	parI, err := GetMetaDefault(pls, "parent", nil)
 | 
| +	if err != nil {
 | 
| +		return nil, err
 | 
| +	}
 | 
|  
 | 
| +	iid, _ := iidI.(int64)
 | 
| +	sid, _ := sidI.(string)
 | 
| +	par, _ := parI.(*Key)
 | 
|  	return NewKey(aid, ns, kind, sid, iid, par), nil
 | 
|  }
 | 
|  
 | 
| 
 |