final with optional