diff --git a/kconfig/Kconfig.platform b/kconfig/Kconfig.platform
new file mode 100644
index 0000000..4a045b2
--- /dev/null
+++ b/kconfig/Kconfig.platform
@@ -0,0 +1,15 @@
+menuconfig PLATFORM_IS_RDK
+    bool "RDK"
+    help
+        Support for RDK-based platforms
+
+
+if PLATFORM_IS_RDK
+
+config RDK_EXTENDER
+    bool "RDK Extender device (EXPERIMENTAL)"
+    default n
+
+
+endif
+
diff --git a/src/lib/osn/override.mk b/src/lib/osn/override.mk
index bf128b7..ff210ed 100644
--- a/src/lib/osn/override.mk
+++ b/src/lib/osn/override.mk
@@ -33,11 +33,22 @@ UNIT_EXPORT_CFLAGS := -I$(UNIT_PATH)/inc
 UNIT_SRC := src/osn_inet.c
 UNIT_SRC += src/osn_types.c
 
+#if extender
+ifeq ($(CONFIG_RDK_EXTENDER),y)
+UNIT_SRC += src/osn_dnsmasq.c
+UNIT_SRC += src/osn_udhcpc.c
+UNIT_SRC += src/osn_route.c
+endif
+
 UNIT_SRC_DIR := $(OVERRIDE_DIR)/src
 UNIT_SRC_TOP += $(UNIT_SRC_DIR)/osn_upnpd.c
+
+ifneq ($(CONFIG_RDK_EXTENDER),y)
 UNIT_SRC_TOP += $(UNIT_SRC_DIR)/osn_dhcpc.c
 UNIT_SRC_TOP += $(UNIT_SRC_DIR)/osn_route.c
 UNIT_SRC_TOP += $(UNIT_SRC_DIR)/osn_dhcps.c
+endif
+
 UNIT_SRC_TOP += $(UNIT_SRC_DIR)/osn_dhcps6.c
 UNIT_SRC_TOP += $(UNIT_SRC_DIR)/osn_odhcp6c.c
 UNIT_SRC_TOP += $(UNIT_SRC_DIR)/osn_inet6.c
diff --git a/src/lib/osn/src/osn_dhcps.c b/src/lib/osn/src/osn_dhcps.c
index d183172..f2885fd 100644
--- a/src/lib/osn/src/osn_dhcps.c
+++ b/src/lib/osn/src/osn_dhcps.c
@@ -284,11 +284,13 @@ static bool dhcp_server_init(osn_dhcp_server_t *self, const char *ifname)
         return false;
     }
 
+#ifndef CONFIG_RDK_EXTENDER
     if (!sync_init(SYNC_MGR_NM))
     {
         LOGE("Cannot init sync manager for NM");
         return false;
     }
+#endif
 
     /* Initialize this instance */
     memset(self, 0 ,sizeof(*self));
diff --git a/src/lib/osync_hal/src/inet.c b/src/lib/osync_hal/src/inet.c
index b221667..580ff83 100644
--- a/src/lib/osync_hal/src/inet.c
+++ b/src/lib/osync_hal/src/inet.c
@@ -304,7 +304,11 @@ osync_hal_return_t osync_hal_inet_add_to_bridge(
 
     memset(cmd, 0, sizeof(cmd));
 
+#ifdef CONFIG_RDK_EXTENDER
+    snprintf(cmd, sizeof(cmd), "ovs-vsctl add-port %s %s", br_name, if_name);
+#else
     snprintf(cmd, sizeof(cmd), "brctl addif %s %s", br_name, if_name);
+#endif
     LOGD("%s: Adding to bridge with \"%s\"", if_name, cmd);
     rc = system(cmd);
     if (!WIFEXITED(rc) || WEXITSTATUS(rc) != 0)
diff --git a/src/lib/target/inc/target_internal.h b/src/lib/target/inc/target_internal.h
index 1608b03..61f0f06 100644
--- a/src/lib/target/inc/target_internal.h
+++ b/src/lib/target/inc/target_internal.h
@@ -35,7 +35,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include "osync_hal.h"
 #include "osn_dhcp.h"
 
+#if !defined(CONFIG_RDK_EXTENDER)
 #include <mesh/meshsync_msgs.h>  // needed only by sync_send_security_change()
+#endif
 
 #ifndef __WIFI_HAL_H__
 #include "ccsp/wifi_hal.h"
@@ -182,12 +184,15 @@ bool                 sync_init(sync_mgr_t mgr);
 bool                 sync_cleanup(void);
 bool                 sync_send_ssid_change(INT ssid_index, const char *ssid_ifname,
                                     const char *new_ssid);
+#if !defined(CONFIG_RDK_EXTENDER)
 bool                 sync_send_security_change(INT ssid_index, const char *ssid_ifname,
                                     MeshWifiAPSecurity *sec);
+#endif
 bool                 sync_send_status(radio_cloud_mode_t mode);
 
 bool                 vif_state_update(INT ssidIndex);
 bool                 vif_state_get(INT ssidIndex, struct schema_Wifi_VIF_State *vstate);
+bool                 vif_state_sta_get(INT ssidIndex, struct schema_Wifi_VIF_State *vstate);
 bool                 vif_copy_to_config(INT ssidIndex, struct schema_Wifi_VIF_State *vstate,
                                         struct schema_Wifi_VIF_Config *vconf);
 struct               target_radio_ops;
diff --git a/src/lib/target/override.mk b/src/lib/target/override.mk
index 8c37835..369d2a5 100644
--- a/src/lib/target/override.mk
+++ b/src/lib/target/override.mk
@@ -44,7 +44,11 @@ UNIT_SRC_TOP += $(UNIT_SRC_DIR)/radio.c
 UNIT_SRC_TOP += $(UNIT_SRC_DIR)/vif.c
 UNIT_SRC_TOP += $(UNIT_SRC_DIR)/stats.c
 UNIT_SRC_TOP += $(UNIT_SRC_DIR)/log.c
+
+ifneq ($(CONFIG_RDK_EXTENDER),y)
 UNIT_SRC_TOP += $(UNIT_SRC_DIR)/sync.c
+endif
+
 UNIT_SRC_TOP += $(UNIT_SRC_DIR)/maclearn.c
 UNIT_SRC_TOP += $(UNIT_SRC_DIR)/bsal.c
 
@@ -53,6 +57,8 @@ UNIT_CFLAGS  += -DENABLE_MESH_SOCKETS
 
 UNIT_DEPS    := $(PLATFORM_DIR)/src/lib/devinfo
 UNIT_DEPS    += $(PLATFORM_DIR)/src/lib/osync_hal
+
+#UNIT_DEPS    += src/lib/kconfig
 UNIT_DEPS    += src/lib/evsched
 UNIT_DEPS    += src/lib/schema
 UNIT_DEPS    += src/lib/const
@@ -66,6 +72,7 @@ endif
 
 UNIT_LDFLAGS := $(SDK_LIB_DIR)  -lhal_wifi -lrt
 UNIT_CFLAGS += -DCONTROLLER_ADDR="\"$(shell echo -n $(CONTROLLER_ADDR))\""
+UNIT_CFLAGS += -include "$(KCONFIG_WORK).h" 
 
 UNIT_EXPORT_CFLAGS  := $(UNIT_CFLAGS)
 UNIT_EXPORT_LDFLAGS := $(UNIT_LDFLAGS)
diff --git a/src/lib/target/src/radio.c b/src/lib/target/src/radio.c
index 9bedd00..33a2032 100644
--- a/src/lib/target/src/radio.c
+++ b/src/lib/target/src/radio.c
@@ -72,6 +72,7 @@ static c_item_t map_country_str[] =
 {
     C_ITEM_STR_STR("826",                       "UK"),  // ISO 3166-1
     C_ITEM_STR_STR("840",                       "US"),
+    C_ITEM_STR_STR("705",                       "SI"),  // (non-standard)
     C_ITEM_STR_STR("841",                       "US"),  // (non-standard)
 };
 
@@ -620,6 +621,62 @@ bool target_radio_config_init2()
             g_rops.op_vconf(&vconfig, rconfig.if_name);
             g_rops.op_vstate(&vstate);
         }
+#ifdef CONFIG_RDK_EXTENDER
+        /* CLIENT-API */
+        ret = wifi_getSTANumberOfEntries(&snum);
+        if (ret != RETURN_OK)
+        {
+            LOGE("%s: failed to get SSID count", __func__);
+            return false;
+        }
+
+        for (s = 0; s < snum; s++)
+        {
+            memset(ssid_ifname, 0, sizeof(ssid_ifname));
+            ret = wifi_getSTAName(s, ssid_ifname);
+            if (ret != RETURN_OK)
+            {
+                LOGW("%s: failed to get STA name for index %lu. Skipping.\n", __func__, s);
+                continue;
+            }
+            // Filter SSID's that we don't have mappings for
+            if (!target_unmap_ifname_exists(ssid_ifname))
+            {
+                LOGW("%s: STA %s not in map. Skipping.\n", __func__, ssid_ifname);
+                continue;
+            }
+
+            ret = wifi_getSTARadioIndex(s, &ssid_radio_idx);
+            if (ret != RETURN_OK)
+            {
+                LOGW("Cannot get radio index for SSID %lu", s);
+                continue;
+            }
+
+            if ((ULONG)ssid_radio_idx != r)
+            {
+                continue;
+            }
+
+            LOGI("Found STA index %lu: %s", s, ssid_ifname);
+            if (!vif_state_sta_get(s, &vstate))
+            {
+                LOGE("%s: cannot get vif state for STA index %lu", __func__, s);
+                continue;
+            }
+            if (!vif_copy_to_config(s, &vstate, &vconfig))
+            {
+                LOGE("%s: cannot copy VIF state to config for STA index %lu", __func__, s);
+                continue;
+            }
+            g_rops.op_vconf(&vconfig, rconfig.if_name);
+            g_rops.op_vstate(&vstate);
+
+
+        }
+
+        /* END CLIENT-API */
+#endif
 
     }
 
@@ -807,6 +864,9 @@ bool
 radio_cloud_mode_set(radio_cloud_mode_t mode)
 {
     radio_cloud_mode = mode;
-
+#ifdef CONFIG_RDK_EXTENDER
+    return true;
+#else
     return sync_send_status(radio_cloud_mode);
+#endif
 }
diff --git a/src/lib/target/src/sync.c b/src/lib/target/src/sync.c
index 5b4337d..b8dfc17 100644
--- a/src/lib/target/src/sync.c
+++ b/src/lib/target/src/sync.c
@@ -43,7 +43,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include <sys/socket.h>
 #include <sys/un.h>
 
+#ifndef CONFIG_RDK_EXTENDER
 #include <mesh/meshsync_msgs.h>  // this file is included by vendor
+#endif
 
 #include "os.h"
 #include "log.h"
@@ -146,6 +148,7 @@ static char* sync_iface_name(int iface_type)
     return tmp;
 }
 
+#ifndef CONFIG_RDK_EXTENDER
 static int wiifhal_sync_iface_mltype(int iface_type)
 {
     c_item_t            *citem;
@@ -157,7 +160,7 @@ static int wiifhal_sync_iface_mltype(int iface_type)
 
     return -1;
 }
-
+#endif
 static void sync_process_msg(MeshSync *mp)
 {
     radio_cloud_mode_t              cloud_mode;
diff --git a/src/lib/target/src/target.c b/src/lib/target/src/target.c
index ffaaf6a..ef20eda 100644
--- a/src/lib/target/src/target.c
+++ b/src/lib/target/src/target.c
@@ -281,12 +281,13 @@ bool target_init(target_init_opt_t opt, struct ev_loop *loop)
                         "(Failed to initialize EVSCHED)");
                 return -1;
             }
-
+            #ifndef CONFIG_RDK_EXTENDER
             if (!sync_init(SYNC_MGR_WM))
             {
                 // It reports the error
                 return false;
             }
+            #endif
             if (!set_deauth_and_scan_filter_flags())
             {
                 LOGE("Failed to set csa_deauth and scan filter flags");
@@ -296,11 +297,13 @@ bool target_init(target_init_opt_t opt, struct ev_loop *loop)
             break;
 
         case TARGET_INIT_MGR_CM:
+            #ifndef CONFIG_RDK_EXTENDER
             if (!sync_init(SYNC_MGR_CM))
             {
                 // It reports the error
                 return false;
             }
+            #endif
             break;
 
         case TARGET_INIT_MGR_BM:
@@ -323,7 +326,9 @@ bool target_close(target_init_opt_t opt, struct ev_loop *loop)
     switch (opt)
     {
         case TARGET_INIT_MGR_WM:
+            #ifndef CONFIG_RDK_EXTENDER
             sync_cleanup();
+            #endif
             /* fall through */
 
         case TARGET_INIT_MGR_SM:
diff --git a/src/lib/target/src/vif.c b/src/lib/target/src/vif.c
index aaecbf9..a987aa3 100644
--- a/src/lib/target/src/vif.c
+++ b/src/lib/target/src/vif.c
@@ -262,7 +262,8 @@ static bool acl_apply(
 
     return true;
 }
-
+//FIXME: is this needed only for mesh something?
+#if !defined(CONFIG_RDK_EXTENDER) 
 static const char* security_conf_find_by_key(
         const struct schema_Wifi_VIF_Config *vconf,
         char *key)
@@ -279,6 +280,7 @@ static const char* security_conf_find_by_key(
 
     return NULL;
 }
+#endif
 
 static bool security_to_state(
         INT ssid_index,
@@ -449,7 +451,7 @@ static bool security_to_state(
     vstate->security_len = n;
     return true;
 }
-
+#if !defined(CONFIG_RDK_EXTENDER)
 static bool security_to_syncmsg(
         const struct schema_Wifi_VIF_Config *vconf,
         MeshWifiAPSecurity *dest)
@@ -527,7 +529,7 @@ static bool security_to_syncmsg(
 
     return true;
 }
-
+#endif
 static bool vif_is_enabled(INT ssid_index)
 {
     BOOL        enabled = false;
@@ -602,10 +604,177 @@ bool vif_copy_to_config(
         STRSCPY(vconf->mac_list[i], vstate->mac_list[i]);
     }
     vconf->mac_list_len = vstate->mac_list_len;
+    /* CLIENT-API */
+    SCHEMA_SET_STR(vconf->parent, vstate->parent);
+    LOGT("vconf->parent = %s", vconf->parent);
+    SCHEMA_SET_INT(vconf->uapsd_enable, vstate->uapsd_enable);
+    LOGT("vconf->uapsd_enable = %d", vconf->uapsd_enable);
+
 
     return true;
 }
 
+#if defined(CONFIG_RDK_EXTENDER)
+/* CLIENT-API */
+
+bool vif_state_sta_get(INT ssidIndex, struct schema_Wifi_VIF_State *vstate)
+{
+    CHAR                            buf[WIFIHAL_MAX_BUFFER];
+    INT                             ret;
+    char                            ssid_ifname[128];
+    hw_mode_t                       min_hw_mode;
+    INT                             radio_idx;
+    char                            band[128];
+    BOOL                            gOnly, nOnly, acOnly;
+    char                            *str;
+    ULONG                           lval;
+    int                             n = 0;
+
+    memset(vstate, 0, sizeof(*vstate));
+    schema_Wifi_VIF_State_mark_all_present(vstate);
+    vstate->_partial_update = true;
+    vstate->associated_clients_present = false;
+    vstate->vif_config_present = false;
+    memset(ssid_ifname, 0, sizeof(ssid_ifname));
+
+    ret = wifi_getSTAName(ssidIndex, ssid_ifname);
+    if (ret != RETURN_OK)
+    {
+        LOGE("%s: cannot get sta name for index %d", __func__, ssidIndex);
+        return false;
+    }
+
+    SCHEMA_SET_STR(vstate->if_name, target_unmap_ifname(ssid_ifname));
+
+    SCHEMA_SET_STR(vstate->mode, "sta");
+    SCHEMA_SET_INT(vstate->enabled, true);
+    SCHEMA_SET_INT(vstate->uapsd_enable, false);
+    SCHEMA_SET_INT(vstate->vif_radio_idx, target_map_ifname_to_vif_radio_idx(vstate->if_name));
+
+    // mac (w/ exists)
+    memset(buf, 0, sizeof(buf));
+    ret = wifi_getSTAMAC(ssidIndex, buf);
+    if (ret != RETURN_OK)
+    {
+        LOGW("%s: Failed to get STA (mac)", ssid_ifname);
+    }
+    else
+    {
+        SCHEMA_SET_STR(vstate->mac, buf);
+    }
+
+    // mac (w/ exists)
+    memset(buf, 0, sizeof(buf));
+    ret = wifi_getSTABSSID(ssidIndex, buf);
+    if (ret != RETURN_OK)
+    {
+        LOGW("%s: Failed to get STA (parent)", ssid_ifname);
+    }
+    else
+    {
+        SCHEMA_SET_STR(vstate->parent, buf);
+    }
+
+
+    ret = wifi_getSSIDRadioIndex(ssidIndex, &radio_idx);
+    if (ret != RETURN_OK)
+    {
+        LOGE("%s: cannot get radio idx for SSID %s\n", __func__, ssid_ifname);
+        return false;
+    }
+
+
+    memset(band, 0, sizeof(band));
+    ret = wifi_getRadioOperatingFrequencyBand(radio_idx, band);
+    if (ret != RETURN_OK)
+    {
+        LOGE("%s: cannot get radio band for idx %d", __func__, radio_idx);
+        return false;
+    }
+
+
+    // min_hw_mode (w/ exists)
+    if (band[0] == '5')
+    {
+        min_hw_mode = HW_MODE_11A;
+    } else
+    {
+        min_hw_mode = HW_MODE_11B;
+    }
+    ret = wifi_getRadioStandard(radio_idx, buf, &gOnly, &nOnly, &acOnly);
+    if (ret != RETURN_OK)
+    {
+        LOGW("%s: Failed to get min_hw_mode from %d", ssid_ifname, radio_idx);
+    }
+    else
+    {
+        if (gOnly)
+        {
+            min_hw_mode = HW_MODE_11G;
+        }
+        else if (nOnly)
+        {
+            min_hw_mode = HW_MODE_11N;
+        }
+        else if (acOnly)
+        {
+            min_hw_mode = HW_MODE_11AC;
+        }
+    }
+
+    str = c_get_str_by_key(map_hw_mode, min_hw_mode);
+    if (strlen(str) == 0)
+    {
+        LOGW("%s: failed to encode min_hw_mode (%d)",
+             ssid_ifname, min_hw_mode);
+    }
+    else
+    {
+        SCHEMA_SET_STR(vstate->min_hw_mode, str);
+    }
+    // channel (w/ exists)
+    ret = wifi_getRadioChannel(radio_idx, &lval);
+    if (ret != RETURN_OK)
+    {
+        LOGW("%s: Failed to get channel from radio idx %d", ssid_ifname, radio_idx);
+    }
+    else
+    {
+        SCHEMA_SET_INT(vstate->channel, lval);
+    }
+
+
+    SCHEMA_SET_STR(vstate->ssid_broadcast, "disabled");
+    SCHEMA_SET_STR(vstate->mac_list_type, "none");
+    SCHEMA_SET_INT(vstate->btm, 0);
+    SCHEMA_SET_INT(vstate->rrm, 0);
+    SCHEMA_SET_INT(vstate->wds, 0);
+    SCHEMA_SET_INT(vstate->ap_bridge, false);
+    //Wifi credentials
+    SCHEMA_SET_STR(vstate->ssid, "opensync.onboard");
+
+    strncpy(vstate->security_keys[n],
+            OVSDB_SECURITY_ENCRYPTION,
+            sizeof(vstate->security_keys[n]) - 1);
+
+    strncpy(vstate->security[n],
+            OVSDB_SECURITY_ENCRYPTION_WPA_PSK,
+            sizeof(vstate->security[n]) - 1);
+    n++;
+    strncpy(vstate->security_keys[n],
+            OVSDB_SECURITY_KEY,
+            sizeof(vstate->security_keys[n]) - 1);
+    strncpy(vstate->security[n],
+            "7eCyoqETHiJzKBBALPFP9X8mVy4dwCga",
+            sizeof(vstate->security[n]) - 1);
+
+    n++;
+    vstate->security_len = n;
+    return true;
+
+}
+#endif
+
 bool vif_state_get(INT ssidIndex, struct schema_Wifi_VIF_State *vstate)
 {
     ULONG                           lval;
@@ -888,7 +1055,9 @@ bool target_vif_config_set2(
     INT ret;
     c_item_t *citem;
     char tmp[256];
+#if !defined(CONFIG_RDK_EXTENDER)
     MeshWifiAPSecurity sec;
+#endif
     const char *ssid_ifname = target_map_ifname((char *)vconf->if_name);
 
     if (!vif_ifname_to_idx(ssid_ifname, &ssid_index))
@@ -966,10 +1135,12 @@ bool target_vif_config_set2(
             else
             {
                 LOGI("%s: SSID updated to '%s'", ssid_ifname, tmp);
+                #if !defined(CONFIG_RDK_EXTENDER)
                 if (!sync_send_ssid_change(ssid_index, ssid_ifname, vconf->ssid))
                 {
                     LOGE("%s: Failed to sync SSID change to '%s'", ssid_ifname, vconf->ssid);
                 }
+                #endif
             }
         }
     }
@@ -977,6 +1148,8 @@ bool target_vif_config_set2(
 
     if (changed->security && vconf->security_len)
     {
+	//TODO: add proper WA
+	#if !defined(CONFIG_RDK_EXTENDER)
         memset(&sec, 0, sizeof(sec));
         if (!security_to_syncmsg(vconf, &sec))
         {
@@ -1018,6 +1191,7 @@ bool target_vif_config_set2(
                 }
             }
         }
+	#endif
     }
 
 
