Use factory function taking positional values instead of manual constructor invocation