macro to get around unsafe lifetimes thing