Hardware and software systems