Constructor with optional parameters