It might be a good idea to cut down the interface a bit and the `unsafe` code needs to be replaced because it depends on the drop flag.