added macros
ignore output js
faster version