Sterilize all equipment using a liquid steriliser or boiling hot water.
Pour milk into a large pot. Add calcium chloride and citric acid diluted in 1/4 cup water to the milk. Stir well.
Dilute rennet in the other 1/4 cup water, set aside. Stir just before using to lift any sediment.
Heat milk to 32C (89F), while constantly stirring to prevent milk overheating at the bottom. Once at the required temperature, remove milk from heat and add diluted rennet and stir twice. Cover the pot with a lid and set aside in a warm place for 25-30 minutes.
After this time, check the curd. It should be set firm at the top and when stabbed with a knife it should yield a clean break - the slit should be clean with whey coming up through the slit. Cut the curd with a knife into 3cm (just over 1inch) cubes.
Place the pot back on the stove and slowely heat the curds to 42C (108F) - do not overheat. Transfer curds into a cheesecloth lined colander set over a bowl if you are planning on keeping the whey and strain the curds and whey. Leave to drain for 5 minutes.
In the meantime, in a large bowl mix salt with cooled water and ice to create a salt bath. Place hot water in another bowl.
Add a ladleful of the drained curds to the hot water bowl and after about 20 seconds, gather as much of the curds as possible and strart stretching the cheese. Do not squeeze as that will squeeze moisture out of the cheese. Simply pull then fold over and stretch in another direction. Place the cheese back in the hot water if it becomes less pliable but is not yet smooth.
Once smooth, mould into a ball and plunge into the iced water. Repeat with the rest of the curds.
After 10 minutes in the bath, the mozzarella is ready to eat. Store in the salted brine mixed with a little whey (add a dash of liquid smoke if desired here). Consume within a day of making or slice and freeze.