Re-wrote the macro parsing code, added new features!