made fields readonly because they could be