rewritten macro eval-if-available
some cleanups