manual endianness restrictions now enforced with a newtype