Expanded constructor