modes now work with callbacks