diff --git a/v23/security/jni.go b/v23/security/jni.go
index b6868e6..51c182d 100644
--- a/v23/security/jni.go
+++ b/v23/security/jni.go
@@ -724,7 +724,7 @@
 //export Java_io_v_v23_security_BlessingStoreImpl_nativeDefaultBlessings
 func Java_io_v_v23_security_BlessingStoreImpl_nativeDefaultBlessings(jenv *C.JNIEnv, jBlessingStoreImpl C.jobject, goPtr C.jlong) C.jobject {
 	env := jutil.Env(uintptr(unsafe.Pointer(jenv)))
-	blessings := (*(*security.BlessingStore)(jutil.NativePtr(goPtr))).Default()
+	blessings, _ := (*(*security.BlessingStore)(jutil.NativePtr(goPtr))).Default()
 	jBlessings, err := JavaBlessings(env, blessings)
 	if err != nil {
 		jutil.JThrowV(env, err)
diff --git a/v23/security/store.go b/v23/security/store.go
index bb24fab..4dc8e08 100644
--- a/v23/security/store.go
+++ b/v23/security/store.go
@@ -106,20 +106,21 @@
 	return jutil.CallVoidMethod(env, s.jBlessingStore, "setDefaultBlessings", []jutil.Sign{blessingsSign}, jBlessings)
 }
 
-func (s *blessingStore) Default() security.Blessings {
+func (s *blessingStore) Default() (security.Blessings, <-chan struct{}) {
 	env, freeFunc := jutil.GetEnv()
 	defer freeFunc()
+	// TODO(ashankar,spetrovic): Figure out notification API in Java
 	jBlessings, err := jutil.CallObjectMethod(env, s.jBlessingStore, "defaultBlessings", nil, blessingsSign)
 	if err != nil {
 		log.Printf("Couldn't call Java defaultBlessings method: %v", err)
-		return security.Blessings{}
+		return security.Blessings{}, nil
 	}
 	blessings, err := GoBlessings(env, jBlessings)
 	if err != nil {
 		log.Printf("Couldn't convert Java Blessings to Go Blessings: %v", err)
-		return security.Blessings{}
+		return security.Blessings{}, nil
 	}
-	return blessings
+	return blessings, nil
 }
 
 func (s *blessingStore) PublicKey() security.PublicKey {
