diff --git a/include/camera/ndk/NdkCameraCaptureSession.h b/include/camera/ndk/NdkCameraCaptureSession.h
index b3367c7..5d5cae2 100644
--- a/include/camera/ndk/NdkCameraCaptureSession.h
+++ b/include/camera/ndk/NdkCameraCaptureSession.h
@@ -39,27 +39,32 @@
 
 typedef struct ACameraCaptureSession_stateCallbacks {
     void*                               context;
-    ACameraCaptureSession_stateCallback onConfigured;
-    ACameraCaptureSession_stateCallback onConfigureFailed;
-    ACameraCaptureSession_stateCallback onClosed;
+    ACameraCaptureSession_stateCallback onClosed; // session is unusable after this callback
     ACameraCaptureSession_stateCallback onReady;
     ACameraCaptureSession_stateCallback onActive;
 } ACameraCaptureSession_stateCallbacks;
 
+enum {
+    CAPTURE_FAILURE_REASON_FLUSHED = 0,
+    CAPTURE_FAILURE_REASON_ERROR
+};
+
 typedef struct ACameraCaptureFailure {
-    uint32_t frameNumber;
-    int      reason;
-    int      sequenceId;
-    int      wasImageCaptured;
+    int64_t frameNumber;
+    int     reason;
+    int     sequenceId;
+    bool    wasImageCaptured;
 } ACameraCaptureFailure;
 
+/* Note that the ACaptureRequest* in the callback will be different to what app has submitted,
+   but the contents will still be the same as what app submitted */
 typedef void (*ACameraCaptureSession_captureCallback_start)(
         void* context, ACameraCaptureSession* session,
-        ACaptureRequest* request, long timestamp);
+        const ACaptureRequest* request, int64_t timestamp);
 
 typedef void (*ACameraCaptureSession_captureCallback_result)(
         void* context, ACameraCaptureSession* session,
-        ACaptureRequest* request, ACameraMetadata* result);
+        ACaptureRequest* request, const ACameraMetadata* result);
 
 typedef void (*ACameraCaptureSession_captureCallback_failed)(
         void* context, ACameraCaptureSession* session,
@@ -67,22 +72,30 @@
 
 typedef void (*ACameraCaptureSession_captureCallback_sequenceEnd)(
         void* context, ACameraCaptureSession* session,
-        int sequenceId, long frameNumber);
+        int sequenceId, int64_t frameNumber);
+
+typedef void (*ACameraCaptureSession_captureCallback_sequenceAbort)(
+        void* context, ACameraCaptureSession* session,
+        int sequenceId);
 
 typedef struct ACameraCaptureSession_captureCallbacks {
     void*                                             context;
-    ACameraCaptureSession_captureCallback_start       onCaptureStarted;
-    ACameraCaptureSession_captureCallback_result      onCaptureProgressed;
-    ACameraCaptureSession_captureCallback_result      onCaptureCompleted;
-    ACameraCaptureSession_captureCallback_failed      onCaptureFailed;
-    ACameraCaptureSession_captureCallback_sequenceEnd onCaptureSequenceCompleted;
-    ACameraCaptureSession_captureCallback_sequenceEnd onCaptureSequenceAborted;
+    ACameraCaptureSession_captureCallback_start         onCaptureStarted;
+    ACameraCaptureSession_captureCallback_result        onCaptureProgressed;
+    ACameraCaptureSession_captureCallback_result        onCaptureCompleted;
+    ACameraCaptureSession_captureCallback_failed        onCaptureFailed;
+    ACameraCaptureSession_captureCallback_sequenceEnd   onCaptureSequenceCompleted;
+    ACameraCaptureSession_captureCallback_sequenceAbort onCaptureSequenceAborted;
 } ACameraCaptureSession_captureCallbacks;
 
+enum {
+    CAPTURE_SEQUENCE_ID_NONE = -1
+};
+
 /*
  * Close capture session
  */
-camera_status_t ACameraCaptureSession_close(ACameraCaptureSession*);
+void ACameraCaptureSession_close(ACameraCaptureSession*);
 
 struct ACameraDevice;
 typedef struct ACameraDevice ACameraDevice;
@@ -98,14 +111,16 @@
  */
 camera_status_t ACameraCaptureSession_capture(
         ACameraCaptureSession*, /*optional*/ACameraCaptureSession_captureCallbacks*,
-        int numRequests, const ACaptureRequest* requests);
+        int numRequests, ACaptureRequest** requests,
+        /*optional*/int* captureSequenceId);
 
 /**
  * Send repeating capture request(s)
  */
 camera_status_t ACameraCaptureSession_setRepeatingRequest(
         ACameraCaptureSession*, /*optional*/ACameraCaptureSession_captureCallbacks*,
-        int numRequests, const ACaptureRequest* requests);
+        int numRequests, ACaptureRequest** requests,
+        /*optional*/int* captureSequenceId);
 
 /**
  * Stop repeating capture request(s)
diff --git a/include/camera/ndk/NdkCameraDevice.h b/include/camera/ndk/NdkCameraDevice.h
index 6eb0707..2008a68 100644
--- a/include/camera/ndk/NdkCameraDevice.h
+++ b/include/camera/ndk/NdkCameraDevice.h
@@ -44,8 +44,8 @@
 
 typedef struct ACameraDevice_StateCallbacks {
     void*                             context;
-    ACameraDevice_StateCallback       onDisconnected;
-    ACameraDevice_ErrorStateCallback  onError;
+    ACameraDevice_StateCallback       onDisconnected; // Device is unusable after this callback
+    ACameraDevice_ErrorStateCallback  onError;        // Device is unusable after this callback
 } ACameraDevice_stateCallbacks;
 
 /**
@@ -93,10 +93,17 @@
 camera_status_t ACaptureSessionOutputContainer_remove(
         ACaptureSessionOutputContainer*, const ACaptureSessionOutput*);
 
+/*
+ * Create a new capture session.
+ * If there is a preexisting session, the previous session will be closed automatically.
+ * However, app still needs to call ACameraCaptureSession_close on previous session.
+ * Otherwise the resources hold by previous session won't be freed
+ */
 camera_status_t ACameraDevice_createCaptureSession(
         ACameraDevice*,
         const ACaptureSessionOutputContainer*       outputs,
-        const ACameraCaptureSession_stateCallbacks* callbacks);
+        const ACameraCaptureSession_stateCallbacks* callbacks,
+        /*out*/ACameraCaptureSession** session);
 
 #ifdef __cplusplus
 } // extern "C"
diff --git a/include/camera/ndk/NdkCameraError.h b/include/camera/ndk/NdkCameraError.h
index 94a6942..6d671de 100644
--- a/include/camera/ndk/NdkCameraError.h
+++ b/include/camera/ndk/NdkCameraError.h
@@ -47,7 +47,11 @@
     ACAMERA_ERROR_CAMERA_REQUEST        = ACAMERA_ERROR_BASE - 8,
     ACAMERA_ERROR_CAMERA_RESULT         = ACAMERA_ERROR_BASE - 9,
     ACAMERA_ERROR_CAMERA_BUFFER         = ACAMERA_ERROR_BASE - 10,
-
+    ACAMERA_ERROR_SESSION_CLOSED        = ACAMERA_ERROR_BASE - 11,
+    ACAMERA_ERROR_SESSION_NOT_DRAINED   = ACAMERA_ERROR_BASE - 12,
+    ACAMERA_ERROR_INVALID_OPERATION     = ACAMERA_ERROR_BASE - 13,
+    ACAMERA_ERROR_TIMEOUT               = ACAMERA_ERROR_BASE - 14,
+    ACAMERA_ERROR_STREAM_CONFIGURE_FAIL = ACAMERA_ERROR_BASE - 15,
 } camera_status_t;
 
 
diff --git a/include/camera/ndk/NdkCaptureRequest.h b/include/camera/ndk/NdkCaptureRequest.h
index 44b36d9..566d78f 100644
--- a/include/camera/ndk/NdkCaptureRequest.h
+++ b/include/camera/ndk/NdkCaptureRequest.h
@@ -42,11 +42,12 @@
 
 typedef struct ACaptureRequest ACaptureRequest;
 
-camera_status_t ACameraOutputTarget_create(ANativeWindow*);
+camera_status_t ACameraOutputTarget_create(ANativeWindow* window, ACameraOutputTarget** out);
 void ACameraOutputTarget_free(ACameraOutputTarget*);
 
 camera_status_t ACaptureRequest_addTarget(ACaptureRequest*, const ACameraOutputTarget*);
 camera_status_t ACaptureRequest_removeTarget(ACaptureRequest*, const ACameraOutputTarget*);
+//TODO: do we need API to query added targets?
 
 /*
  * Get a metadata entry
