add better drop function