diff --git a/src/printer_yin.c b/src/printer_yin.c
index 88f9178..db54819 100644
--- a/src/printer_yin.c
+++ b/src/printer_yin.c
@@ -129,27 +129,17 @@
 {
     struct lysp_stmt *stmt;
     int8_t inner_flag;
-    struct lysp_ext *ext_def;
 
     if ((ext->flags & LYS_INTERNAL) || (ext->parent_stmt != substmt) || (ext->parent_stmt_index != substmt_index)) {
         return;
     }
 
-    lysp_ext_find_definition(pctx->module->ctx, ext, NULL, &ext_def);
-    if (!ext_def) {
-        return;
-    }
-
     ypr_close_parent(pctx, flag);
     inner_flag = 0;
 
-    if (ext_def->argname) {
-        lysp_ext_instance_resolve_argument(pctx->module->ctx, ext, ext_def);
-    }
-
-    ypr_open(pctx, ext->name, (ext_def->flags & LYS_YINELEM_TRUE) ? NULL : ext_def->argname, ext->argument, inner_flag);
+    ypr_open(pctx, ext->name, (ext->def->flags & LYS_YINELEM_TRUE) ? NULL : ext->def->argname, ext->argument, inner_flag);
     LEVEL++;
-    if (ext_def->flags & LYS_YINELEM_TRUE) {
+    if (ext->def->flags & LYS_YINELEM_TRUE) {
         const char *prefix, *name, *id;
         size_t prefix_len, name_len;
 
@@ -158,9 +148,9 @@
         /* we need to use the same namespace as for the extension instance element */
         id = ext->name;
         ly_parse_nodeid(&id, &prefix, &prefix_len, &name, &name_len);
-        ly_print_(pctx->out, "%*s<%.*s:%s>", INDENT, (int)prefix_len, prefix, ext_def->argname);
+        ly_print_(pctx->out, "%*s<%.*s:%s>", INDENT, (int)prefix_len, prefix, ext->def->argname);
         lyxml_dump_text(pctx->out, ext->argument, 0);
-        ly_print_(pctx->out, "</%.*s:%s>\n", (int)prefix_len, prefix, ext_def->argname);
+        ly_print_(pctx->out, "</%.*s:%s>\n", (int)prefix_len, prefix, ext->def->argname);
     }
     LY_LIST_FOR(ext->child, stmt) {
         if (stmt->flags & (LYS_YIN_ATTR | LYS_YIN_ARGUMENT)) {
@@ -425,7 +415,7 @@
         return;
     }
 
-    ly_print_(pctx->out, "%*s<%s %s=\"", INDENT, ly_stmt2str(stmt), attr);
+    ly_print_(pctx->out, "%*s<%s %s=\"", INDENT, lyplg_ext_stmt2str(stmt), attr);
     lyxml_dump_text(pctx->out,
             (restr->arg.str[0] != LYSP_RESTR_PATTERN_NACK && restr->arg.str[0] != LYSP_RESTR_PATTERN_ACK) ?
             restr->arg.str : &restr->arg.str[1], 1);
@@ -450,7 +440,7 @@
     ypr_reference(pctx, restr->ref, restr->exts, &inner_flag);
 
     LEVEL--;
-    ypr_close(pctx, ly_stmt2str(stmt), inner_flag);
+    ypr_close(pctx, lyplg_ext_stmt2str(stmt), inner_flag);
 }
 
 static void
@@ -657,7 +647,7 @@
     ypr_open(pctx, inout->name, NULL, NULL, *flag);
     LEVEL++;
 
-    yprp_extension_instances(pctx, lys_nodetype2stmt(inout->nodetype), 0, inout->exts, NULL);
+    yprp_extension_instances(pctx, lyplg_ext_nodetype2stmt(inout->nodetype), 0, inout->exts, NULL);
     LY_ARRAY_FOR(inout->musts, u) {
         yprp_restr(pctx, &inout->musts[u], LY_STMT_MUST, "condition", NULL);
     }
@@ -727,7 +717,7 @@
     ypr_open(pctx, action->parent ? "action" : "rpc", "name", action->name, flag);
 
     LEVEL++;
-    yprp_extension_instances(pctx, lys_nodetype2stmt(action->nodetype), 0, action->exts, &flag);
+    yprp_extension_instances(pctx, lyplg_ext_nodetype2stmt(action->nodetype), 0, action->exts, &flag);
     yprp_iffeatures(pctx, action->iffeatures, action->exts, &flag);
     ypr_status(pctx, action->flags, action->exts, &flag);
     ypr_description(pctx, action->dsc, action->exts, &flag);
@@ -756,7 +746,7 @@
     ypr_open(pctx, lys_nodetype2str(node->nodetype), "name", node->name, *flag);
     LEVEL++;
 
-    yprp_extension_instances(pctx, lys_nodetype2stmt(node->nodetype), 0, node->exts, flag);
+    yprp_extension_instances(pctx, lyplg_ext_nodetype2stmt(node->nodetype), 0, node->exts, flag);
     yprp_when(pctx, lysp_node_when(node), flag);
     yprp_iffeatures(pctx, node->iffeatures, node->exts, flag);
 }
