diff --git a/src/all_building_blocks/all_building_blocks.jl b/src/all_building_blocks/all_building_blocks.jl
index 8a4d260e57d95c7d6ebd47d5f5f52ee7abd2d2c0..a337c924097acd0bb93a28af4f2b8af059be7af6 100644
--- a/src/all_building_blocks/all_building_blocks.jl
+++ b/src/all_building_blocks/all_building_blocks.jl
@@ -3,10 +3,12 @@ include("base_building_blocks.jl")
 include("building_blocks.jl")
 include("trapezoids.jl")
 include("spoilt_slice_selects.jl")
+include("wait_blocks.jl")
 
 import .BaseBuildingBlocks: waveform, waveform_sequence, events, BaseBuildingBlock
 import .BuildingBlocks: BuildingBlock
 import .Trapezoids: Trapezoid, SliceSelect, LineReadout
 import .SpoiltSliceSelects: SpoiltSliceSelect
+import ..WaitBlocks: Wait
 
 end
\ No newline at end of file
diff --git a/src/all_building_blocks/wait_blocks.jl b/src/all_building_blocks/wait_blocks.jl
new file mode 100644
index 0000000000000000000000000000000000000000..3558cf818b12aa6e03677a1f5146fa2fb8c26f43
--- /dev/null
+++ b/src/all_building_blocks/wait_blocks.jl
@@ -0,0 +1,22 @@
+module WaitBlocks
+import JuMP: @constraint
+import ...BuildSequences: get_global_model
+import ...Variables: get_free_variable, VariableType, duration
+import ...Components: NoGradient
+import ..BaseBuildingBlocks: BaseBuildingBlock
+
+struct Wait <: BuildingBlock
+    duration :: VariableType
+    function Wait(var)
+        res = new(get_free_variable(var))
+        if !(res.duration isa Number)
+            @constraint get_global_model() res.duration >= 0
+        end
+    end
+end
+
+duration(wb::Wait) = wb.duration
+Base.keys(::Wait) = (:empty)
+Base.getindex(wb::Wait) = NoGradient{1}(wb.duration)
+
+end
\ No newline at end of file