added fast guarded move