I use AssignZ. It can make previously saved assigns only after they are actually requested, and if a program asks for an assign that doesn't exist, you can assign it somewhere direct from the requester (and optionally save that assign for next time), or even deny it so you'll never get another requester about it.