implement readWord
moved some really long lines around
use applicative to neaten readByte / writeByte
"add" op