new device classes

Not yet tested, initial commit