A bit more work in implementing delete: doesn't work as well as i wanted it to.