Re: ensure()
I was under the impression that "Acquire" already factors in currently existing items in your inventory.
Unless I'm reading your request wrong... (Or I don't understand how acquire works...)
Edit: I just tested with meat paste, and it seems acquire does already factor in existing...