Implement (untested) shift, delete, delete_if