Removed "generics" everywhere and replaced them by type of "Device".
Generics was a wrong concept to choose from, it takes away from
polymorphism, and as such causes unavoidable code duplication.