I am revisiting this in my next pull request. I am not sure the caller need to see the changes made by this class. I will definitely try to get rid of the mutable.