I did the 2) and 3)
I am not sure at all since I haven't tested a lot
Perhaps It can be made far more readable