diff --git a/LCGlexicon/ENIAM_LCGlexicon.ml b/LCGlexicon/ENIAM_LCGlexicon.ml
index bb87133..eb101f6 100644
--- a/LCGlexicon/ENIAM_LCGlexicon.ml
+++ b/LCGlexicon/ENIAM_LCGlexicon.ml
@@ -74,6 +74,16 @@ let assign_semantics (selectors,(bracket,quant,syntax),(rule,weight)) =
     with Not_found -> BasicSem(Xlist.map quant fst) in
   selectors,(bracket,quant,syntax),(semantics,weight)
 
+let rec add_x_args_rec = function
+    Imp(s,d,t) -> Imp(add_x_args_rec s,d,t)
+  | ImpSet(s,l) -> ImpSet(add_x_args_rec s,l)
+  | Tensor[Atom "<conll_root>"] ->  Tensor[Atom "<conll_root>"]
+  | Tensor l -> ImpSet(Tensor l,[Backward,Maybe(Tensor[Atom "X"]);Forward,Maybe(Tensor[Atom "X"])])
+  | t -> failwith ("add_x_args_rec: " ^ ENIAM_LCGstringOf.grammar_symbol 0 t)
+
+let add_x_args (selectors,(bracket,quant,syntax),(semantics,weight)) =
+  (selectors,(bracket,quant,add_x_args_rec syntax),(semantics,weight))
+
 let rec extract_category pat rev = function
     (cat,rel,v) :: l -> if cat = pat then rel,v,(List.rev rev @ l) else extract_category pat ((cat,rel,v) :: rev) l
   | [] -> raise Not_found
@@ -93,10 +103,11 @@ let dict_of_grammar grammar =
                     StringMap.add_inc dict2 lemma [rule] (fun l -> rule :: l)),l in
             StringMap.add dict pos (dict2,l)))
 
-let make_rules filename =
+let make_rules x_flag filename =
   let lexicon = ENIAM_LCGlexiconParser.load_lexicon filename in
   let lexicon = List.rev (Xlist.rev_map lexicon assign_quantifiers) in
   let lexicon = List.rev (Xlist.rev_map lexicon assign_semantics) in
+  let lexicon = if x_flag then List.rev (Xlist.rev_map lexicon add_x_args) else lexicon in
   dict_of_grammar lexicon
 
 let find_rules rules cats =
diff --git a/LCGlexicon/resources/lexicon-pl.dic b/LCGlexicon/resources/lexicon-pl.dic
index 3f8307b..b997ea1 100644
--- a/LCGlexicon/resources/lexicon-pl.dic
+++ b/LCGlexicon/resources/lexicon-pl.dic
@@ -265,13 +265,6 @@ lemma=),pos=interp:       rparen;
 lemma=],pos=interp:       rparen2;
 pos=unk:                  np*number*case*gender*person;
 
-#  | ".","interp",[] -> [LCGrenderer.make_frame_simple [] ["dot"] c (make_node "." "interp" c.weight 0 [])] # FIXME: to jest potrzebne przy CONLL
-#      | "<conll_root>","interp",[] ->
-#       let batrs = (make_node "<conll_root>" "interp" c.weight 0 []) in
-#       let schema_list = [[schema_field CLAUSE "Clause" Forward [Phrase IP;Phrase (CP(Int,CompUndef));Phrase (NP(Case "voc"));Phrase (Lex "interj")]]] in
-#       [LCGrenderer.make_frame false tokens lex_sems [] schema_list ["<conll_root>"] d batrs]
-#      | lemma,c,l -> failwith ("process_interp: " ^ lemma ^ ":" ^ c ^ ":" ^ (String.concat ":" (Xlist.map l (String.concat ".")))) in
-
 lemma=<conll_root>,pos=interp:    <conll_root>/(ip*T*T*T+cp*int*T+np*sg*voc*T*T+interj);
 
 pos=sinterj:                      BRACKET interj;
diff --git a/LCGlexicon/test.ml b/LCGlexicon/test.ml
index 04cee75..a80ad47 100644
--- a/LCGlexicon/test.ml
+++ b/LCGlexicon/test.ml
@@ -20,8 +20,8 @@
 open ENIAM_LCGlexiconTypes
 open ENIAM_LCGtypes
 
-let rules = ENIAM_LCGlexicon.make_rules ENIAM_LCGlexiconTypes.rules_filename
-(* let rules = ENIAM_LCGlexicon.make_rules "resources/lexicon-pl.dic" *)
+let rules = ENIAM_LCGlexicon.make_rules false ENIAM_LCGlexiconTypes.rules_filename
+(* let rules = ENIAM_LCGlexicon.make_rules false "resources/lexicon-pl.dic" *)
 
 let examples = [
   "kot",[
diff --git a/LCGparser/ENIAM_LCGrules.ml b/LCGparser/ENIAM_LCGrules.ml
index 25d02f7..952244f 100644
--- a/LCGparser/ENIAM_LCGrules.ml
+++ b/LCGparser/ENIAM_LCGrules.ml
@@ -446,8 +446,8 @@ let backward_cross_composition references args functs =
 let rules = [
   backward_application;
   forward_application;
-  (* backward_cross_composition; *)
-  (* forward_cross_composition; *)
+  (*backward_cross_composition;
+  forward_cross_composition;*)
 ]
 
 let rec flatten_functor2 l seml = function
diff --git a/LCGparser/TODO b/LCGparser/TODO
index e69de29..6244544 100644
--- a/LCGparser/TODO
+++ b/LCGparser/TODO
@@ -0,0 +1 @@
+- sprawdzić czy krzyżowe kompozycje działają w zdaniu "Ponownie musiał użyć ręcznika"
diff --git a/corpora/test_conll2.ml b/corpora/test_conll2.ml
index 8d3d909..eccaa37 100644
--- a/corpora/test_conll2.ml
+++ b/corpora/test_conll2.ml
@@ -22,7 +22,8 @@ open ENIAM_LCGlexiconTypes
 open ENIAM_LCGtypes
 open ENIAMsubsyntaxTypes
 
-let rules = ENIAM_LCGlexicon.make_rules ENIAM_LCGlexiconTypes.rules_filename
+let rules = ENIAM_LCGlexicon.make_rules false ENIAM_LCGlexiconTypes.rules_filename
+let dep_rules = ENIAM_LCGlexicon.make_rules true ENIAM_LCGlexiconTypes.rules_filename
 
 let examples = [
   (* "Szpak","Szpak śpiewa.";*)
@@ -81,7 +82,7 @@ let create_dep_chart tokens lex_sems paths =
       ENIAM_LCGrenderer.reset_variable_names ();
       ENIAM_LCGrenderer.add_variable_numbers ();
       let cats = clarify_categories ["X"] t in
-      let l = ENIAM_LCGlexicon.create_entries rules id t.ENIAMtokenizerTypes.orth cats s.ENIAMlexSemanticsTypes.schemata in
+      let l = ENIAM_LCGlexicon.create_entries dep_rules id t.ENIAMtokenizerTypes.orth cats s.ENIAMlexSemanticsTypes.schemata in
       IntMap.add nodes i l) in
   dep_create_rec nodes sons 0