add with-keys macro