mostly done abstracting over word size