added more tests to be sure normal draggin cases are taking into account
refactor our client production code. now it is much cleaner.
simplified production code