abstraction and controller to remote devices