eal: introduce device class abstraction