Make more template friendly and allow for usage without macros.