use callback for roots/position