refactor of USB