refactor Device. extract private methods to device interfaces