Splitted up private implementations in priv namespace and public interface outside.