update to implicit and explicit ctor