Added macro support. This adds a dependency but is easily worth it.