Better naming?
Added documentation
Move around some variables