Adding support for ordering and cancelling hardware

This is the same support for ordering and cancelling hardware as before, but the pull request is cleaner this time.