reduced code size and greatly improved simplicity