constructor invocation pattern