diff --git a/apps/contacts/css/contacts.css b/apps/contacts/css/contacts.css
index f60d9bfe677ee5655a61ae6671b73655e5968f57..143fdae80eb0517a0ae3155432a97926ac24a09f 100644
--- a/apps/contacts/css/contacts.css
+++ b/apps/contacts/css/contacts.css
@@ -9,6 +9,7 @@
 #contacts { position: fixed; background: #fff; max-width: 100%; width: 20em; left: 12.5em; top: 3.7em; bottom: 3em; overflow: auto; padding: 0; margin: 0; }
 .contacts a { height: 23px; display: block; left: 12.5em; margin: 0 0 0 0; padding: 0 0 0 25px; }
 .contacts li.ui-draggable { height: 23px; width: 20em; }
+.ui-state-hover { border: 1px solid dashed; }
 #bottomcontrols { padding: 0; bottom:0px; height:2.8em; width: 20em; margin:0; background:#eee; border-top:1px solid #ccc; position:fixed; -moz-box-shadow: 0 -3px 3px -3px #000; -webkit-box-shadow: 0 -3px 3px -3px #000; box-shadow: 0 -3px 3px -3px #000;}
 #contacts_newcontact { float: left; margin: 0.2em 0 0 1em; }
 #chooseaddressbook { float: right; margin: 0.2em 1em 0 0; }
diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js
index 12c6d98f20bce6f0ca71ced4ae560d7e10dbf269..036734049b6d1718bb9cc7101afdff610e834240 100644
--- a/apps/contacts/js/contacts.js
+++ b/apps/contacts/js/contacts.js
@@ -1551,8 +1551,17 @@ Contacts={
 								})}, 100);
 							setTimeout(Contacts.UI.Contacts.lazyupdate, 500);*/
 							if($('#contacts h3').length > 1) {
-								$('#contacts h3,#contacts ul').droppable({ drop: Contacts.UI.Contacts.drop});
+								$('#contacts h3,#contacts ul').each(function(index) {
+									var id = $(this).data('id');
+									var accept = 'li:not([data-bookid="'+id+'"])';
+									$(this).droppable({
+										drop: Contacts.UI.Contacts.drop,
+										activeClass: 'ui-state-hover',
+										accept: accept
+									});
+								});
 								$('#contacts li').draggable({
+									revert: 'invalid',
 									axis: 'y', containment: '#contacts',
 									scroll: true, scrollSensitivity: 100,
 									opacity: 0.7, helper: 'clone'