rewrite with onDrop