Adding abstraction for device
something new about input