add ckecking free destination, but buggy