tweaked fn macro