changed comparison logic for better readability
read directly from file without setting the text encoding explicitly
added addMacros() method to append a macro hash