diff --git a/protoBuilds/010d6c/010d6c.ot2.apiv2.py.json b/protoBuilds/010d6c/010d6c.ot2.apiv2.py.json
index a1bb3e851..31c19e4cb 100644
--- a/protoBuilds/010d6c/010d6c.ot2.apiv2.py.json
+++ b/protoBuilds/010d6c/010d6c.ot2.apiv2.py.json
@@ -1,5 +1,6 @@
 {
-    "content": "# flake8: noqa\n\nmetadata = {\n    'protocolName': 'Ribogreen Assay',\n    'author': 'Rami Farawi <rami.farawi@opentrons.com>',\n    'source': 'Custom Protocol Request',\n    'apiLevel': '2.13'\n}\n\n\ndef run(ctx):\n\n    [csv_samp, plate_standard, diluent_buff_col,\n        duplicate_plating, m300_mount, p300_mount] = get_values(  # noqa: F821\n        \"csv_samp\", \"plate_standard\", \"diluent_buff_col\",\n            \"duplicate_plating\", \"m300_mount\", \"p300_mount\")\n\n    # p300_mount = 'left'\n    # m300_mount = 'right'\n    # plate_standard = True\n    # diluent_buff_col = 4\n    # duplicate_plating = False\n    # csv_samp = \"\"\"\n    #\n    # source slot, source well, dest well\n    # 7, A1, A1\n    # 8, A1, A2\n    # 7, A3, A3\n    #\n    # \"\"\"\n\n    def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top):\n        # Split transfer up to allow for more control over touch tip height\n        ## p300.transfer(vol, matrix_buff, well, new_tip='never')\n\n        # Loop is used if volume is more than pipette max\n        current_vol = Vol\n        while current_vol > Pipette.max_volume:\n            # Aspirate max volume\n            Pipette.aspirate(Pipette.max_volume, Source.bottom(z = 4))\n            # Touch tip\n            Pipette.move_to(Source.top(z = -3))\n            Pipette.touch_tip()\n\n            # Dispense max volume\n            if not Dispense_Top:\n                Pipette.dispense(Pipette.max_volume, Destination.bottom(z = 3)) # With z offset\n            else:\n                Pipette.dispense(Pipette.max_volume, Destination.top())\n\n            # Touch tip\n            Pipette.move_to(Destination.top(z = -3))\n            Pipette.touch_tip()\n\n            # Update current volume\n            current_vol -= Pipette.max_volume\n\n        # If volume to transfer is 0, do nothing\n        if current_vol == 0:\n            return()\n\n        # If volume more than 0 but less than or equal to max\n\n        # Aspirate volume\n        Pipette.aspirate(current_vol, Source.bottom(z = 4))\n        # Touch tip\n        Pipette.move_to(Source.top(z = -3))\n        Pipette.touch_tip()\n\n        # Dispense volume\n        if not Dispense_Top:\n            Pipette.dispense(current_vol, Destination.bottom(z = 3)) # With z offset\n        else:\n            Pipette.dispense(current_vol, Destination.top())\n        # Touch tip\n        Pipette.move_to(Destination.top(z = -3))\n        Pipette.touch_tip()\n\n\n    # labware\n    reservoir = ctx.load_labware('corning_12_reservoir', 2)\n    try:\n        heater_shaker = ctx.load_module('heaterShakerModuleV1', 6)\n        heater_shaker.close_labware_latch()\n        hs_plate = heater_shaker.load_labware('nunc_96_wellplate_400ul')\n    except ValueError:\n        hs_plate = ctx.load_labware('nunc_96_wellplate_400ul', 6)\n\n    deep_plate = ctx.load_labware('pyramid_96_wellplate_2000ul', 4)\n    tuberack_15 = ctx.load_labware('opentrons_15_tuberack_5000ul', 7)\n    tuberack_24 = ctx.load_labware('opentrons_24_tuberack_nest_2ml_snapcap', 8)\n    tuberack_24 = tuberack_24\n\n    tips = [ctx.load_labware('opentrons_96_tiprack_300ul', slot)\n            for slot in [1]]\n\n    # pipettes\n    p300 = ctx.load_instrument('p300_single_gen2', p300_mount, tip_racks=tips)\n    m300 = ctx.load_instrument('p300_multi_gen2', m300_mount, tip_racks=tips)\n\n    csv_lines = [[val.strip() for val in line.split(',')]\n                 for line in csv_samp.splitlines()\n                 if line.split(',')[0].strip()][1:]\n\n    # mapping\n    matrix_buff = reservoir.wells_by_name()['A1']\n\n    triton = reservoir.wells_by_name()['A3']\n\n    te = reservoir.wells_by_name()['A5']\n\n    dye = reservoir.wells_by_name()['A7']\n\n    calibration_solution = tuberack_15.wells()[0]\n\n\n    # protocol\n    diluent_buff_col = deep_plate.columns()[diluent_buff_col-1]\n    if plate_standard:\n        ctx.comment('\\n------------ADDING BUFFER TO PLATE------------\\n\\n')\n        buffer_vols = [0, 250, 500, 750, 900, 950, 980, 1000]\n\n        p300.pick_up_tip()\n        p300.mix(1, 300, matrix_buff)\n\n        for vol, well in zip(buffer_vols, diluent_buff_col):\n\n            Transfer_With_TT(\n                Pipette = p300,\n                Source = matrix_buff,\n                Destination = well,\n                Vol = vol,\n                Dispense_Top = False\n            )\n\n        p300.drop_tip()\n\n        ctx.comment('\\n------------ADDING CALIBRATION------------\\n\\n')\n        calibration_vols = [1000, 750, 500, 250, 100, 50, 20, 0]\n\n        p300.pick_up_tip() # Moved to outside of loop\n        p300.mix(1, 300, calibration_solution.bottom(z=4)) # Moved to outside of loop\n\n        for vol, well in zip(calibration_vols, diluent_buff_col):\n            if vol == 0:\n                continue\n\n            Transfer_With_TT(\n                Pipette = p300,\n                Source = calibration_solution,\n                Destination = well,\n                Vol = vol,\n                Dispense_Top = True\n            )\n\n        p300.drop_tip() # Moved to outside of loop\n\n    if duplicate_plating:\n        ctx.comment('\\n------------DUPLICATE PLATING------------\\n\\n')\n        dispense_wells = [hs_plate.wells_by_name()[well]\n                          for well in ['A1', 'A2', 'A11', 'A12']]\n        source_col = diluent_buff_col[0]\n        m300.pick_up_tip()\n        m300.mix(1, 220, source_col.bottom(z = 3)) # Added in pre-wet\n        m300.aspirate(220, source_col.bottom(z = 3))\n\n        # Added in touch tip\n        m300.move_to(source_col.top(z = -3))\n        m300.touch_tip()\n\n        for well in dispense_wells:\n            m300.dispense(50, well.bottom(z = 3))\n\n            # Added in touch tip\n            m300.move_to(well.top(z = -3))\n            m300.touch_tip()\n\n        m300.drop_tip()\n\n    else:\n        ctx.comment('\\n------------TRIPLICATE PLATING------------\\n\\n')\n        dispense_wells = [hs_plate.wells_by_name()[well]\n                          for well in ['A1', 'A2', 'A3', 'A10', 'A11', 'A12']]\n        source_col = diluent_buff_col[0]\n        m300.pick_up_tip()\n        m300.mix(1, 300, source_col.bottom(z = 3)) # Added in pre-wet\n        m300.aspirate(300, source_col.bottom(z = 3))\n\n        # Added in touch tip\n        m300.move_to(source_col.top(z = -3))\n        m300.touch_tip()\n\n        for well in dispense_wells:\n            m300.dispense(50, well.bottom(z = 3))\n\n            # Added in touch tip\n            m300.move_to(well.top(z = -3))\n            m300.touch_tip()\n\n        m300.drop_tip()\n\n    ctx.comment('\\n------------ADDING SAMPLE------------\\n\\n')\n\n    # Modified for faster sample addition with less tip wastage\n    if duplicate_plating:\n        reps = 2 * 2\n    else:\n        reps = 3 * 2\n\n    for index, line in enumerate(csv_lines):\n        csv_slot = int(line[0])\n\n        csv_well = line[1]\n        source_well = ctx.loaded_labwares[csv_slot].wells_by_name()[csv_well]\n        dest_well = line[2]\n\n        # Only pick up tip and aspirate if start of new replicate batch\n        if index%reps == 0:\n            p300.pick_up_tip()\n            p300.mix(1, 50*reps, source_well.bottom(z = 3)) # Added in pre-wet\n            p300.aspirate(50*reps, source_well.bottom(z = 3))\n            p300.move_to(source_well.top(-3))\n            p300.touch_tip()\n\n        p300.dispense(50, hs_plate.wells_by_name()[dest_well].bottom(z = 3)) # Set z offset\n        p300.move_to(hs_plate.wells_by_name()[dest_well].top(-3))\n        p300.touch_tip()\n\n        # Only drop up tip if end of new replicate batch\n        if index%reps == reps - 1:\n            p300.drop_tip()\n\n    ctx.comment('\\n------------PLATING TRITON------------\\n\\n')\n\n    # Slow down aspirate and dispense rate\n    m300.flow_rate.dispense *= 2\n    m300.flow_rate.aspirate *= 2\n\n    dispense_wells = hs_plate.rows()[0][:6]\n    m300.pick_up_tip()\n    m300.mix(1, 300, triton.bottom(z = 3))\n    m300.aspirate(300, triton.bottom(z = 3))\n\n    # Added in touch tip\n    m300.move_to(triton.top(z = -3))\n    m300.touch_tip()\n\n\n    for well in dispense_wells:\n        m300.dispense(50, well.top())\n        ctx.delay(seconds = 1)\n        m300.move_to(well.top(z = 0))\n        m300.touch_tip()\n        ctx.delay(seconds = 1)\n\n    m300.drop_tip()\n\n    ctx.comment('\\n------------PLATING TE------------\\n\\n')\n    dispense_wells = hs_plate.rows()[0][6:]\n    m300.pick_up_tip()\n    m300.mix(1, 300, te.bottom(z = 3))\n    m300.aspirate(300, te.bottom(z = 3))\n    for well in dispense_wells:\n        m300.dispense(50, well.top())\n        ctx.delay(seconds = 1)\n        m300.move_to(well.top(z = 0))\n        m300.touch_tip()\n        ctx.delay(seconds = 1)\n\n    m300.drop_tip()\n\n    try:\n        heater_shaker.set_and_wait_for_temperature(37)\n        ctx.delay(minutes=10)\n        heater_shaker.deactivate_heater()\n    except:\n        ctx.delay(minutes=10)\n\n    ctx.comment('\\n------------PLATING DYE------------\\n\\n')\n\n    m300.pick_up_tip()\n    m300.mix(1, 300, dye.bottom(z = 3))\n\n    # Changed how dye is dispensed so that each well only has one transfer action to preserve accuracy\n    for i in range(0, 12, 3):\n        wells = [well for well in hs_plate.rows()[0][i : i+3]]\n        m300.aspirate(300, dye.bottom(z = 3))\n        m300.touch_tip()\n\n        for well in wells:\n            m300.dispense(100, well.top())\n            ctx.delay(seconds = 1)\n            m300.move_to(well.top(z = 0))\n            m300.touch_tip()\n            ctx.delay(seconds = 1)\n\n#     for _ in range(2):\n#         m300.distribute(50, dye, [well.top() for well in hs_plate.rows()[0]],\n#                         new_tip='never')\n\n    m300.drop_tip()\n\n    ctx.pause('''\n    Plate is ready! Please remove, seal, and transport to the plate reader for\n    analysis. Please remember to tidy the robot deck and dispose of any waste.\n    ''')\n",
+    "content": "def get_values(*names):\n    import json\n    _all_values = json.loads(\"\"\"{\"csv_samp\":\"source slot,source well,dest well\\\\n8,A1,A4\\\\n8,A1,A5\",\"plate_standard\":true,\"diluent_buff_col\":1,\"duplicate_plating\":true,\"m300_mount\":\"left\",\"p300_mount\":\"right\"}\"\"\")\n    return [_all_values[n] for n in names]\n\n\n# flake8: noqa\n\nmetadata = {\n    'protocolName': 'Ribogreen Assay',\n    'author': 'Rami Farawi <rami.farawi@opentrons.com>',\n    'source': 'Custom Protocol Request',\n    'apiLevel': '2.13'\n}\n\n\ndef run(ctx):\n\n    [csv_samp, plate_standard, diluent_buff_col,\n        duplicate_plating, m300_mount, p300_mount] = get_values(  # noqa: F821\n        \"csv_samp\", \"plate_standard\", \"diluent_buff_col\",\n            \"duplicate_plating\", \"m300_mount\", \"p300_mount\")\n\n    # p300_mount = 'left'\n    # m300_mount = 'right'\n    # plate_standard = True\n    # diluent_buff_col = 4\n    # duplicate_plating = False\n    # csv_samp = \"\"\"\n    #\n    # source slot, source well, dest well\n    # 7, A1, A1\n    # 8, A1, A2\n    # 7, A3, A3\n    #\n    # \"\"\"\n\n    def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top):\n        # Split transfer up to allow for more control over touch tip height\n        ## p300.transfer(vol, matrix_buff, well, new_tip='never')\n\n        # Loop is used if volume is more than pipette max\n        current_vol = Vol\n        while current_vol > Pipette.max_volume:\n            # Aspirate max volume\n            Pipette.aspirate(Pipette.max_volume, Source.bottom(z = 4))\n            # Touch tip\n            Pipette.move_to(Source.top(z = -3))\n            Pipette.touch_tip(v_offset=1)\n\n            # Dispense max volume\n            if not Dispense_Top:\n                Pipette.dispense(Pipette.max_volume, Destination.bottom(z = 3)) # With z offset\n            else:\n                Pipette.dispense(Pipette.max_volume, Destination.top())\n\n            # Touch tip\n            Pipette.move_to(Destination.top(z = -3))\n            Pipette.touch_tip(v_offset=1)\n\n            # Update current volume\n            current_vol -= Pipette.max_volume\n\n        # If volume to transfer is 0, do nothing\n        if current_vol == 0:\n            return()\n\n        # If volume more than 0 but less than or equal to max\n\n        # Aspirate volume\n        Pipette.aspirate(current_vol, Source.bottom(z = 4))\n        # Touch tip\n        Pipette.move_to(Source.top(z = -3))\n        Pipette.touch_tip(v_offset=1)\n\n        # Dispense volume\n        if not Dispense_Top:\n            Pipette.dispense(current_vol, Destination.bottom(z = 3)) # With z offset\n        else:\n            Pipette.dispense(current_vol, Destination.top())\n        # Touch tip\n        Pipette.move_to(Destination.top(z = -3))\n        Pipette.touch_tip(v_offset=1)\n\n\n    # labware\n    reservoir = ctx.load_labware('corning_12_reservoir', 2)\n    try:\n        heater_shaker = ctx.load_module('heaterShakerModuleV1', 6)\n        heater_shaker.close_labware_latch()\n        hs_plate = heater_shaker.load_labware('nunc_96_wellplate_400ul')\n    except ValueError:\n        hs_plate = ctx.load_labware('nunc_96_wellplate_400ul', 6)\n\n    deep_plate = ctx.load_labware('pyramid_96_wellplate_2000ul', 4)\n    tuberack_15 = ctx.load_labware('opentrons_15_tuberack_5000ul', 7)\n    tuberack_24 = ctx.load_labware('opentrons_24_tuberack_nest_2ml_snapcap', 8)\n    tuberack_24 = tuberack_24\n\n    tips = [ctx.load_labware('opentrons_96_tiprack_300ul', slot)\n            for slot in [1]]\n\n    # pipettes\n    p300 = ctx.load_instrument('p300_single_gen2', p300_mount, tip_racks=tips)\n    m300 = ctx.load_instrument('p300_multi_gen2', m300_mount, tip_racks=tips)\n\n    csv_lines = [[val.strip() for val in line.split(',')]\n                 for line in csv_samp.splitlines()\n                 if line.split(',')[0].strip()][1:]\n\n    # mapping\n    matrix_buff = reservoir.wells_by_name()['A1']\n\n    triton = reservoir.wells_by_name()['A3']\n\n    te = reservoir.wells_by_name()['A5']\n\n    dye = reservoir.wells_by_name()['A7']\n\n    calibration_solution = tuberack_15.wells()[0]\n\n\n    # protocol\n    diluent_buff_col = deep_plate.columns()[diluent_buff_col-1]\n    if plate_standard:\n        ctx.comment('\\n------------ADDING BUFFER TO PLATE------------\\n\\n')\n        buffer_vols = [0, 250, 500, 750, 900, 950, 980, 1000]\n\n        p300.pick_up_tip()\n        p300.mix(1, 300, matrix_buff.bottom(z=4))\n\n        for vol, well in zip(buffer_vols, diluent_buff_col):\n\n            Transfer_With_TT(\n                Pipette = p300,\n                Source = matrix_buff,\n                Destination = well,\n                Vol = vol,\n                Dispense_Top = False\n            )\n\n        p300.drop_tip()\n\n        ctx.comment('\\n------------ADDING CALIBRATION------------\\n\\n')\n        calibration_vols = [1000, 750, 500, 250, 100, 50, 20, 0]\n\n        p300.pick_up_tip() # Moved to outside of loop\n        p300.mix(1, 300, calibration_solution.bottom(z=4)) # Moved to outside of loop\n\n        for vol, well in zip(calibration_vols, diluent_buff_col):\n            if vol == 0:\n                continue\n\n            Transfer_With_TT(\n                Pipette = p300,\n                Source = calibration_solution,\n                Destination = well,\n                Vol = vol,\n                Dispense_Top = True\n            )\n\n        p300.drop_tip() # Moved to outside of loop\n\n    if duplicate_plating:\n        ctx.comment('\\n------------DUPLICATE PLATING------------\\n\\n')\n        dispense_wells = [hs_plate.wells_by_name()[well]\n                          for well in ['A1', 'A2', 'A11', 'A12']]\n        source_col = diluent_buff_col[0]\n        m300.pick_up_tip()\n        m300.mix(5, 300, source_col.bottom(z = 3)) # Added in pre-wet\n        m300.aspirate(200, source_col.bottom(z = 3))\n\n        # Added in touch tip\n        m300.move_to(source_col.top(z = -3))\n        m300.touch_tip(v_offset=1)\n\n        for well in dispense_wells:\n            m300.dispense(50, well.bottom(z = 3))\n\n            # Added in touch tip\n            m300.move_to(well.top(z = -3))\n            m300.touch_tip(v_offset=1)\n\n        m300.drop_tip()\n\n    else:\n        ctx.comment('\\n------------TRIPLICATE PLATING------------\\n\\n')\n        dispense_wells = [hs_plate.wells_by_name()[well]\n                          for well in ['A1', 'A2', 'A3', 'A10', 'A11', 'A12']]\n        source_col = diluent_buff_col[0]\n        m300.pick_up_tip()\n        m300.mix(5, 300, source_col.bottom(z = 3)) # Added in pre-wet\n        m300.aspirate(300, source_col.bottom(z = 3))\n\n        # Added in touch tip\n        m300.move_to(source_col.top(z = -3))\n        m300.touch_tip(v_offset=1)\n\n        for well in dispense_wells:\n            m300.dispense(50, well.bottom(z = 3))\n\n            # Added in touch tip\n            m300.move_to(well.top(z = -3))\n            m300.touch_tip(v_offset=1)\n\n        m300.drop_tip()\n\n    ctx.comment('\\n------------ADDING SAMPLE------------\\n\\n')\n\n    # Modified for faster sample addition with less tip wastage\n    if duplicate_plating:\n        reps = 2 * 2\n    else:\n        reps = 3 * 2\n\n    for index, line in enumerate(csv_lines):\n        csv_slot = int(line[0])\n\n        csv_well = line[1]\n        source_well = ctx.loaded_labwares[csv_slot].wells_by_name()[csv_well]\n        dest_well = line[2]\n\n        # Only pick up tip and aspirate if start of new replicate batch\n        if index%reps == 0:\n            p300.pick_up_tip()\n            p300.mix(1, 50*reps, source_well.bottom(z = 4)) # Added in pre-wet\n            p300.aspirate(50*reps, source_well.bottom(z = 4))\n            p300.move_to(source_well.top(-3))\n            p300.touch_tip(v_offset=1)\n\n        p300.dispense(50, hs_plate.wells_by_name()[dest_well].bottom(z = 3)) # Set z offset\n        p300.move_to(hs_plate.wells_by_name()[dest_well].top(-3))\n        p300.touch_tip(v_offset=1)\n\n        # Only drop up tip if end of new replicate batch\n        if index%reps == reps - 1:\n            p300.drop_tip()\n\n    ctx.comment('\\n------------PLATING TRITON------------\\n\\n')\n\n    # Slow down aspirate and dispense rate\n    m300.flow_rate.dispense *= 2.128\n    m300.flow_rate.aspirate *= 2.128\n\n    dispense_wells = hs_plate.rows()[0][:6]\n    m300.pick_up_tip()\n    m300.mix(1, 300, triton.bottom(z = 3))\n    m300.aspirate(300, triton.bottom(z = 3))\n\n    # Added in touch tip\n    m300.move_to(triton.top(z = -3))\n    m300.touch_tip(v_offset=1)\n\n\n    for well in dispense_wells:\n        m300.dispense(50, well.top())\n        ctx.delay(seconds = 1)\n        m300.move_to(well.top(z = 0))\n        m300.touch_tip(v_offset=1)\n        ctx.delay(seconds = 1)\n\n    m300.drop_tip()\n\n    ctx.comment('\\n------------PLATING TE------------\\n\\n')\n    dispense_wells = hs_plate.rows()[0][6:]\n    m300.pick_up_tip()\n    m300.mix(1, 300, te.bottom(z = 3))\n    m300.aspirate(300, te.bottom(z = 3))\n    for well in dispense_wells:\n        m300.dispense(50, well.top())\n        ctx.delay(seconds = 1)\n        m300.move_to(well.top(z = 0))\n        m300.touch_tip(v_offset=1)\n        ctx.delay(seconds = 1)\n\n    m300.drop_tip()\n\n    try:\n        ctx.pause('Place lid on plate on heater shaker')\n        heater_shaker.set_and_wait_for_temperature(37)\n        ctx.delay(minutes=10)\n        heater_shaker.deactivate_heater()\n        ctx.delay(minutes=5)\n        ctx.pause('Remove lid on plate on heater shaker')\n    except:\n        ctx.delay(minutes=10)\n\n    ctx.comment('\\n------------PLATING DYE------------\\n\\n')\n\n    m300.pick_up_tip()\n    m300.mix(1, 300, dye.bottom(z = 3))\n\n    # Changed how dye is dispensed so that each well only has one transfer action to preserve accuracy\n    for i in range(0, 12, 3):\n        wells = [well for well in hs_plate.rows()[0][i : i+3]]\n        m300.aspirate(300, dye.bottom(z = 3))\n        m300.touch_tip(v_offset=1)\n\n        for well in wells:\n            m300.dispense(100, well.top())\n            ctx.delay(seconds = 1)\n            m300.move_to(well.top(z = 0))\n            m300.touch_tip(v_offset=1)\n            ctx.delay(seconds = 1)\n\n#     for _ in range(2):\n#         m300.distribute(50, dye, [well.top() for well in hs_plate.rows()[0]],\n#                         new_tip='never')\n\n    m300.drop_tip()\n\n    ctx.pause('''\n    Plate is ready! Please remove, seal, and transport to the plate reader for\n    analysis. Please remember to tidy the robot deck and dispose of any waste.\n    ''')\n",
+
     "custom_labware_defs": [
         {
             "brand": {
diff --git a/protocols/010d6c/010d6c.ot2.apiv2.py b/protocols/010d6c/010d6c.ot2.apiv2.py
index ecc4ff0af..0ff368a76 100644
--- a/protocols/010d6c/010d6c.ot2.apiv2.py
+++ b/protocols/010d6c/010d6c.ot2.apiv2.py
@@ -40,7 +40,7 @@ def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top):
             Pipette.aspirate(Pipette.max_volume, Source.bottom(z = 4))
             # Touch tip
             Pipette.move_to(Source.top(z = -3))
-            Pipette.touch_tip()
+            Pipette.touch_tip(v_offset=1)
 
             # Dispense max volume
             if not Dispense_Top:
@@ -50,7 +50,7 @@ def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top):
 
             # Touch tip
             Pipette.move_to(Destination.top(z = -3))
-            Pipette.touch_tip()
+            Pipette.touch_tip(v_offset=1)
 
             # Update current volume
             current_vol -= Pipette.max_volume
@@ -65,7 +65,7 @@ def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top):
         Pipette.aspirate(current_vol, Source.bottom(z = 4))
         # Touch tip
         Pipette.move_to(Source.top(z = -3))
-        Pipette.touch_tip()
+        Pipette.touch_tip(v_offset=1)
 
         # Dispense volume
         if not Dispense_Top:
@@ -74,7 +74,7 @@ def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top):
             Pipette.dispense(current_vol, Destination.top())
         # Touch tip
         Pipette.move_to(Destination.top(z = -3))
-        Pipette.touch_tip()
+        Pipette.touch_tip(v_offset=1)
 
 
     # labware
@@ -121,7 +121,7 @@ def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top):
         buffer_vols = [0, 250, 500, 750, 900, 950, 980, 1000]
 
         p300.pick_up_tip()
-        p300.mix(1, 300, matrix_buff)
+        p300.mix(1, 300, matrix_buff.bottom(z=4))
 
         for vol, well in zip(buffer_vols, diluent_buff_col):
 
@@ -161,19 +161,19 @@ def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top):
                           for well in ['A1', 'A2', 'A11', 'A12']]
         source_col = diluent_buff_col[0]
         m300.pick_up_tip()
-        m300.mix(1, 220, source_col.bottom(z = 3)) # Added in pre-wet
-        m300.aspirate(220, source_col.bottom(z = 3))
+        m300.mix(5, 300, source_col.bottom(z = 3)) # Added in pre-wet
+        m300.aspirate(200, source_col.bottom(z = 3))
 
         # Added in touch tip
         m300.move_to(source_col.top(z = -3))
-        m300.touch_tip()
+        m300.touch_tip(v_offset=1)
 
         for well in dispense_wells:
             m300.dispense(50, well.bottom(z = 3))
 
             # Added in touch tip
             m300.move_to(well.top(z = -3))
-            m300.touch_tip()
+            m300.touch_tip(v_offset=1)
 
         m300.drop_tip()
 
@@ -183,19 +183,19 @@ def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top):
                           for well in ['A1', 'A2', 'A3', 'A10', 'A11', 'A12']]
         source_col = diluent_buff_col[0]
         m300.pick_up_tip()
-        m300.mix(1, 300, source_col.bottom(z = 3)) # Added in pre-wet
+        m300.mix(5, 300, source_col.bottom(z = 3)) # Added in pre-wet
         m300.aspirate(300, source_col.bottom(z = 3))
 
         # Added in touch tip
         m300.move_to(source_col.top(z = -3))
-        m300.touch_tip()
+        m300.touch_tip(v_offset=1)
 
         for well in dispense_wells:
             m300.dispense(50, well.bottom(z = 3))
 
             # Added in touch tip
             m300.move_to(well.top(z = -3))
-            m300.touch_tip()
+            m300.touch_tip(v_offset=1)
 
         m300.drop_tip()
 
@@ -217,14 +217,14 @@ def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top):
         # Only pick up tip and aspirate if start of new replicate batch
         if index%reps == 0:
             p300.pick_up_tip()
-            p300.mix(1, 50*reps, source_well.bottom(z = 3)) # Added in pre-wet
-            p300.aspirate(50*reps, source_well.bottom(z = 3))
+            p300.mix(1, 50*reps, source_well.bottom(z = 4)) # Added in pre-wet
+            p300.aspirate(50*reps, source_well.bottom(z = 4))
             p300.move_to(source_well.top(-3))
-            p300.touch_tip()
+            p300.touch_tip(v_offset=1)
 
         p300.dispense(50, hs_plate.wells_by_name()[dest_well].bottom(z = 3)) # Set z offset
         p300.move_to(hs_plate.wells_by_name()[dest_well].top(-3))
-        p300.touch_tip()
+        p300.touch_tip(v_offset=1)
 
         # Only drop up tip if end of new replicate batch
         if index%reps == reps - 1:
@@ -233,8 +233,8 @@ def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top):
     ctx.comment('\n------------PLATING TRITON------------\n\n')
 
     # Slow down aspirate and dispense rate
-    m300.flow_rate.dispense *= 2
-    m300.flow_rate.aspirate *= 2
+    m300.flow_rate.dispense *= 2.128
+    m300.flow_rate.aspirate *= 2.128
 
     dispense_wells = hs_plate.rows()[0][:6]
     m300.pick_up_tip()
@@ -243,14 +243,14 @@ def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top):
 
     # Added in touch tip
     m300.move_to(triton.top(z = -3))
-    m300.touch_tip()
+    m300.touch_tip(v_offset=1)
 
 
     for well in dispense_wells:
         m300.dispense(50, well.top())
         ctx.delay(seconds = 1)
         m300.move_to(well.top(z = 0))
-        m300.touch_tip()
+        m300.touch_tip(v_offset=1)
         ctx.delay(seconds = 1)
 
     m300.drop_tip()
@@ -264,15 +264,18 @@ def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top):
         m300.dispense(50, well.top())
         ctx.delay(seconds = 1)
         m300.move_to(well.top(z = 0))
-        m300.touch_tip()
+        m300.touch_tip(v_offset=1)
         ctx.delay(seconds = 1)
 
     m300.drop_tip()
 
     try:
+        ctx.pause('Place lid on plate on heater shaker')
         heater_shaker.set_and_wait_for_temperature(37)
         ctx.delay(minutes=10)
         heater_shaker.deactivate_heater()
+        ctx.delay(minutes=5)
+        ctx.pause('Remove lid on plate on heater shaker')
     except:
         ctx.delay(minutes=10)
 
@@ -285,13 +288,13 @@ def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top):
     for i in range(0, 12, 3):
         wells = [well for well in hs_plate.rows()[0][i : i+3]]
         m300.aspirate(300, dye.bottom(z = 3))
-        m300.touch_tip()
+        m300.touch_tip(v_offset=1)
 
         for well in wells:
             m300.dispense(100, well.top())
             ctx.delay(seconds = 1)
             m300.move_to(well.top(z = 0))
-            m300.touch_tip()
+            m300.touch_tip(v_offset=1)
             ctx.delay(seconds = 1)
 
 #     for _ in range(2):