sigh... still waiting for unsigned data types and operator overloading :(