diff --git a/entries/static/entries/css/unification_frames.css b/entries/static/entries/css/unification_frames.css
index aa160a9e054bcf01375029f49d62f750bf6cef10..a4e070bae51ac8f98aaa2b22dfb994ebe18bfa8e 100644
--- a/entries/static/entries/css/unification_frames.css
+++ b/entries/static/entries/css/unification_frames.css
@@ -22,3 +22,7 @@ table.table-button-menu td:hover {
 .preference-bold {
     font-weight: bold;
 }
+
+#unified-frame .argument.active {
+    background-color: #dee1e4;
+}
diff --git a/entries/static/entries/js/selectional_preference.js b/entries/static/entries/js/selectional_preference.js
index 52cf001acdfaadb253c0e07c5a887fbd3512e7ea..2d50564babe31db6720c59c0dbecb758d60a6fcb 100644
--- a/entries/static/entries/js/selectional_preference.js
+++ b/entries/static/entries/js/selectional_preference.js
@@ -120,12 +120,15 @@ function attachPlWNContextAutocomplete() {
 }
 
 function addSelectivePreference() {
-    addSelectivePreferenceBase(unified_view_frame_content[0], 1)
+    if (!unified_frame_active_argument_id) {
+        alert(gettext("Zaznacz argument, do którego chcesz dodać preferencję."));
+        return;
+    }
+    addSelectivePreferenceBase(unified_frame_active_frame, unified_view_frame_content[0], unified_frame_active_argument_id);
 }
 
-function addSelectivePreferenceBase(frame, complement_id) {
-
-    let unified_frame_id = frame.id;
+function addSelectivePreferenceBase(unified_frame, frame, complement_id) {
+    let unified_frame_id = unified_frame.id;
 
     var submitSynsetSelection = function(e,v,m,f){
         if (v == -1) {
@@ -248,7 +251,7 @@ function addSelectivePreferenceBase(frame, complement_id) {
         },
         state4: {
             title: 'Wybierz z istniejÄ…cych',
-            html: relationArgument(frame, complement_id),
+            html: 'TODO',
             buttons: { Anuluj: -1, Zatwierdź: 1 },
             focus: 1,
             submit: function(e,v,m,f){
diff --git a/entries/static/entries/js/unification.js b/entries/static/entries/js/unification.js
index d6872cfb8fc2c569c983a0d5fe8aab3ea2481eff..85d53ff4b72c1aa92a77a95bd630cf7cdbd395e8 100644
--- a/entries/static/entries/js/unification.js
+++ b/entries/static/entries/js/unification.js
@@ -1,8 +1,8 @@
 "use strict";
 
 var unified_view_frame_content;
-var curr_unified_frame;
-
+var unified_frame_active_frame;
+var unified_frame_active_argument_id;
 
 function change_slowal2unified_fram_argument_mapping(slowal_frame_id) {
     var argument_ids = [];
@@ -20,8 +20,8 @@ function change_slowal2unified_fram_argument_mapping(slowal_frame_id) {
         choosed_slowal_frame_id = $(this).data('frame_id');
     });
     if(choosed_slowal_frame_id == slowal_frame_id && argument_ids.length == 2) {
-        change_slowal2unified_fram_argument_mapping_post(curr_unified_frame.id, choosed_slowal_frame_id, argument_ids);
-        get_unified_frame(curr_unified_frame.id);
+        change_slowal2unified_fram_argument_mapping_post(unified_frame_active_frame.id, choosed_slowal_frame_id, argument_ids);
+        get_unified_frame(unified_frame_active_frame.id);
     }
 }
 
@@ -47,8 +47,8 @@ function frames2dom_unidief_view(frames) {
 
         var button_col_div = document.createElement('div');
         button_col_div.innerHTML = '<div class="custom-control custom-checkbox">\n' +
-            '    <input type="checkbox" id="defaultUnchecked" class="custom-control-input" '+(frames[i].verified ? 'checked' : '')+' onclick="change_slowal2unified_mapping_verification('+frames[i].id+', this.checked)">\n' +
-            '    <label class="custom-control-label" for="defaultUnchecked">Zweryfikowane</label>\n' +
+            '    <input type="checkbox" id="slowal-verification-'+frames[i].id+'" class="custom-control-input" '+(frames[i].verified ? 'checked' : '')+' onclick="change_slowal2unified_mapping_verification('+frames[i].id+', this.checked)">\n' +
+            '    <label class="custom-control-label" for="slowal-verification-'+frames[i].id+'">Zweryfikowane</label>\n' +
             '    <br><br>' +
             '    <a href="#" class="btn btn-sm btn-dark" role="button" onclick="change_slowal2unified_fram_argument_mapping('+frames[i].id+')">Z</a>' +
             '</div>';
@@ -135,7 +135,7 @@ function change_slowal2unified_fram_argument_mapping_post(unified_frame_id, slow
 function change_slowal2unified_mapping_verification(slowal_frame_id, verified) {
     check_import_status();
     show_entry_spinners();
-    var data = { 'unified_frame_id' : curr_unified_frame.id, 'slowal_frame_id' : slowal_frame_id, 'verified' : verified };
+    var data = { 'unified_frame_id' : unified_frame_active_frame.id, 'slowal_frame_id' : slowal_frame_id, 'verified' : verified };
     $.ajax({
         type     : 'post',
         url      : '/' + lang + '/unifier/change_slowal2unified_mapping_verification/',
@@ -165,7 +165,6 @@ function get_unified_frame(unified_frame_id, related) {
         data     : data,
         timeout  : 60000,
         success  : function(response) {
-            curr_unified_frame = response.unified_frame;
             unified_view_frame_content = response.frames
             curr_entry = unified_frame_id;
             curr_no_filters = related;
@@ -280,7 +279,7 @@ function unifiedFrame2dom(unifiedFrame, slowal_frames) {
         title = lexical_units_html;
     }
 
-    p.innerHTML = '<span class="lexical-unit' + cls + '">' + title + '</span>';
+    p.innerHTML = '<span class="lexical-unit">' + title + '</span>';
     div.append(p)
 
     let slowal_frames2selecional_preferencies_mapping = slowal_frames2selecional_preferencies(unifiedFrame, slowal_frames);
@@ -294,8 +293,7 @@ function unifiedFrame2dom(unifiedFrame, slowal_frames) {
     var roles_html = '<th scope="row" class="py-2 px-1 text-secondary">' + gettext('Rola') + '</td>';
     var preferences_row = document.createElement('tr');
     var preferences_html = '<th scope="row" class="py-0 px-1 text-secondary">' + gettext('Preferencje selekcyjne') + '</td>';
-    for (var i in unifiedFrame.arguments) {
-        var argument = unifiedFrame.arguments[i];
+    unifiedFrame.arguments.map(argument => {
         var cls = '';
         var data = ' data-argument_id="' + argument.id + '" data-role="' + argument.role + '"';
         roles_html += '<td class="argument py-2 px-1 border-top border-left border-secondary' + cls + ' ' + argument.role_type + '"' + data + '>' + argument.role_type;
@@ -321,7 +319,7 @@ function unifiedFrame2dom(unifiedFrame, slowal_frames) {
 
         // *** and we want to close the <td> here
         preferences_html += '</td>';
-    }
+    });
     preferences_row.innerHTML += preferences_html;
     roles_row.innerHTML = roles_html;
     tbody.append(roles_row);
@@ -396,8 +394,31 @@ function frames2lexical_unitsHTML(frames) {
 
 function show_unified_frame(unified_frame, slowal_frames) {
     var unified_frame_dom = unifiedFrame2dom(unified_frame, slowal_frames);
-    $('#unified-frame').empty();
-    $('#unified-frame').append($(unified_frame_dom));
+    unified_frame_active_frame = unified_frame;
+    $('#unified-frame').empty().append($(unified_frame_dom));
+    select_unified_frame_argument(0);
+    $('#unified-frame .argument')
+        .mouseenter(function() {
+            if (!$(this).hasClass('active')) {
+                $(this).addClass('highlight bg-highlight');
+                show_info(gettext('Kliknij, aby wybrać kolumnę do edycji.'));
+            }
+        })
+        .mouseleave(function() {
+            $(this).removeClass('highlight bg-highlight');
+            clear_info();
+        })
+        .click(function() {
+            select_unified_frame_argument($(this).data('argument_id'));
+            clear_info();
+        });
+}
+
+function select_unified_frame_argument(argument_id) {
+    unified_frame_active_argument_id = argument_id;
+    $('#unified-frame .argument')
+        .removeClass('active')
+        .filter(`[data-argument_id=${unified_frame_active_argument_id}]`).addClass('active');
 }
 
 function show_unified_frame_lexical_units(frames) {
diff --git a/unifier/views.py b/unifier/views.py
index 25d33387d16a018df7bbe1a25f719882d71d650a..16d49e656218f2466d8a3d209c3a9c208297338d 100644
--- a/unifier/views.py
+++ b/unifier/views.py
@@ -1,5 +1,6 @@
 import json
 
+from django.db import transaction
 from django.http import JsonResponse
 
 from common.decorators import ajax_required
@@ -36,6 +37,7 @@ def save_predefined_preference(request):
     return JsonResponse({})
 
 @ajax_required
+@transaction.atomic
 def save_relational_selectional_preference(request):
     if request.method == 'POST':
         frame_id = request.POST['frame_id']