Separated function and driver