Preheat oven to 200°C and grease a 2.5 litre dish with butter.
Melt butter in a pan over high heat and fry onion for several minutes.
Lower heat, cover, and soften onions for 15 minutes.
Uncover, increase heat to evaporate moisture, and stir in flour.
Gradually add 570ml of milk, stirring until sauce thickened.
Season with salt, pepper, lemon juice, and add fresh fish.
Cook briefly until fresh fish is ready, then stir in smoked haddock.
Pour mixture into the dish, let cool, and top with chopped eggs.
Boil potatoes in salted water until tender and drain well.
Mash potatoes with hot milk and butter until smooth.
Spread mash over the fish and score the surface with a fork.
Bake for 30 minutes until the potato topping is crisp and golden.