initial commit of device framework, without tests