+diff --git a/ivi-layermanagement-examples/EGLWLMockNavigation/src/OpenGLES2App.cpp b/ivi-layermanagement-examples/EGLWLMockNavigation/src/OpenGLES2App.cpp
+index 2e65864..8b7e0d1 100644
+--- a/ivi-layermanagement-examples/EGLWLMockNavigation/src/OpenGLES2App.cpp
++++ b/ivi-layermanagement-examples/EGLWLMockNavigation/src/OpenGLES2App.cpp
+@@ -126,8 +126,11 @@ OpenGLES2App::OpenGLES2App(float fps, float animationSpeed, SurfaceConfiguration
+ createWLContext(config);
+ createEGLContext();
+
+- ilmClient_init((t_ilm_nativedisplay)m_wlContextStruct.wlDisplay);
+- setupLayerMangement(config);
++ if (m_wlContextStruct.wlShell == NULL)
++ {
++ ilmClient_init((t_ilm_nativedisplay)m_wlContextStruct.wlDisplay);
++ setupLayerMangement(config);
++ }
+
+ if (config->nosky)
+ {
+diff --git a/weston-ivi-shell/src/ivi-controller-interface.h b/weston-ivi-shell/src/ivi-controller-interface.h
+index cdafcc9..fd18009 100644
+--- a/weston-ivi-shell/src/ivi-controller-interface.h
++++ b/weston-ivi-shell/src/ivi-controller-interface.h
+@@ -66,6 +66,25 @@ struct ivi_controller_interface {
+ int32_t (*commit_changes)(void);
+
+ /**
++ * \brief Creates an ivi_layout_surface.
++ *
++ * \return IVI_SUCCEEDED if the method call was successful
++ * \return IVI_FAILED if the method call was failed
++ */
++ struct ivi_layout_surface* (*surface_create)(
++ struct weston_surface *wl_surface,
++ uint32_t id_surface);
++
++ /**
++ * \brief Configure an ivi_layout_surface
++ *
++ * \return IVI_SUCCEEDED if the method call was successful
++ * \return IVI_FAILED if the method call was failed
++ */
++ void (*surface_configure)(struct ivi_layout_surface *ivisurf,
++ int32_t width, int32_t height);
++
++ /**
+ * surface controller interface
+ */
+