Add device+platform wrappers, rethink device selection approach