bugfix: when the arguments are nil, %take returns a false value
checks package-lock error and abort
split handlers
added condition-signalling wrappers, but it should be removed afterwards
use plist-accessor and maybe-named-lambda