redo with other drivers and other controller, wip