-application_t *application_alloc (void);
-int application_alloc_and_init (app_init_args_t * args);
-void application_free (application_t * app);
-void application_detach_process (application_t * app, u32 api_client_index);
+app_listener_t *app_listener_get (application_t * app, u32 al_index);
+int app_listener_alloc_and_init (application_t * app,
+ session_endpoint_cfg_t * sep,
+ app_listener_t ** listener);
+void app_listener_cleanup (app_listener_t * app_listener);
+session_handle_t app_listener_handle (app_listener_t * app_listener);
+app_listener_t *app_listener_lookup (application_t * app,
+ session_endpoint_cfg_t * sep);
+
+/**
+ * Get app listener handle for listening session
+ *
+ * For a given listening session, this can return either the session
+ * handle of the app listener associated to the listening session or,
+ * if no such app listener exists, the session's handle
+ *
+ * @param ls listening session
+ * @return app listener or listening session handle
+ */
+session_handle_t app_listen_session_handle (session_t * ls);
+/**
+ * Get app listener for listener session handle
+ *
+ * Should only be called on handles that have an app listener, i.e.,
+ * were obtained at the end of a @ref vnet_listen call.
+ *
+ * @param handle handle of the app listener. This is the handle of
+ * either the global or local listener
+ * @return pointer to app listener or 0
+ */
+app_listener_t *app_listener_get_w_handle (session_handle_t handle);
+app_listener_t *app_listener_get_w_session (session_t * ls);
+session_t *app_listener_get_session (app_listener_t * al);
+session_t *app_listener_get_local_session (app_listener_t * al);
+