Hardware and software techniques