renamed internal namespace to detail, to be more like boost