bug fix + micro optimisation using absolute addresses
fix