added private ctor