understanding hardware interfaces