still need to refactor move and drop - but this version works.