Make the potato mash. Boil the peeled and quartered potatoes in salted water until very tender. Drain the potatoes and steam dry them to get rid of the excess of water. Return them to the pot and add hot milk, start mashing with a potato masher until mostly smooth, then add butter and keep mashing until light and fluffy and lump free. Now mix in half of the cheddar cheese, season with salt to taste and set aside till needed. Preheat the oven to 200C/400F.
While the potatoes are cooking make the filling. Heat the oil in a large pan, then add the chopped onion and sauté over low heat for 10 minutes till tender and translucent but not coloured, then add the garlic and chopped herbs and cook for 30 seconds longer.
To the same pan add the ground beef (or lamb if using) and break it up with a wooden spoon or a spatula, add the Worcestershire sauce and cook over medium heat until no longer pink inside, season with salt and pepper to taste.
Now sprinkle the flour all over the meat and stir until the meat is coated in flour and it is no longer visible. Start adding the beef stock gradually while stirring until it is well incorporated and allow the mixture come to a simmer, adding the frozen vegetable mix and continue simmer for 10 minutes over medium heat until the liquid turns into a thin gravy consistency. Do not make it too thick at this point as it will dry out in the oven.
Transfer the meat and vegetable mixture to a 9X13 inch baking dish or a large round casserole dish, then spread the mashed potatoes on top in an even layer. Make swirls with the bottom of a spoon for a crispier top, then scatter the other half of the cheese on top. Bake in the preheated oven for 10 minutes. Then turn the temperature down to 350F/180C and cook for 20 minutes longer. Take out of the oven and let it stand for 10 minutes before serving. This will also the pie to cool down lightly and the sauce to thicken.