 ;;
 ;;
 ;;
+
+(defn string-to-cross
+  "Takes a string and decides, whether it should be a cross or not
+
+  Parameters:
+   s     _string
+  Returns true if there should be a cross"
+  [s]
+  (let [trimmed (.trim s)]
+    (if (re-matches #"0*[,.]?0*" trimmed) false true)))
 
 (defn map-to-unique-strings
   "Takes a sequence of (unique) keys and returns a map

    widget      _the widget object where the paste operation takes place
    old-columns _the number of rows that were present in the table before
    new-columns _the number of rows that will be needed for the paste"
             [widget old-columns new-columns]
             nil ;TODO update the other widgets col-counts and add dummy attrs
             )

           change-attribute-name
           (fn-doc "This function will change the name of the attribute in

             (let [ ctx @context 
                    fca-ctx (get-context ctx)
                    attrs (attributes fca-ctx)
                    inc (incidence fca-ctx)
                    get-cross (fn [obj att] (if (contains? inc [obj att])
                                              "X" " "))
                    attr-count (count attrs)
                    objs (objects fca-ctx)
                    obj-count (count objs)
