adding more function defs and a new class to hold discovered peripherals