I don't think I optimized code *that* much... 
I refactored a little introducing 4 new methods which should be more easy to follow