delete can take a block and allow nil to be returned