Use controllers instead of callbacks