With register now uses callbacks instead of moves