Added some documentation and the each macro