nope, it should be a free function