Until now it seems to work ok. The issue I have with it, is instrumenting the macro calls with edebug. Apparently edebug does not understand that the forms are wrapped into (and ... ), and will evaluate each of them even if some returns nil ! Is there a way to instruct edebug from that ?