function [out] = wobbler_react(vial, buffer_start, ENZYME_TEMP, STRIP_TIME)

%for small circle, diamond gasket:
REAGENT_VOL = 125;
CHASE_VOL = 200;

%for er285w:
%REAGENT_VOL = 125;
%CHASE_VOL = 225;

%for small circle, rectangular gasket:
%REAGENT_VOL = 125;
%CHASE_VOL = 265;

%for large rectangle:
%REAGENT_VOL = 125;
%CHASE_VOL = 300;

STRIP_TIME = STRIP_TIME * 60;

%REMOVE THE NEXT LINE TO NOT ADD RXN BUFFER BEFORE REAGENT
%out = ll_draw_reagent(buffer_start, 250, port);

%Put enzyme mix in reagent loop
disp([timestamp(clock) ' ' num2str(get_slide_temp) ' ' num2str(get_slide_temp_corrected) '      Put enzyme mix ' num2str(vial) ' in reagent loop']);
out = ll_draw_reagent(vial, REAGENT_VOL);

%Push enzyme mix into flow cell
disp([timestamp(clock) ' ' num2str(get_slide_temp) ' ' num2str(get_slide_temp_corrected) '      Add wash buffer ' num2str(buffer_start) ' to loop']);
out = ll_draw_reagent(buffer_start, CHASE_VOL);

%Heat slide to setpoint for reaction to start
disp([timestamp(clock) ' ' num2str(get_slide_temp) ' ' num2str(get_slide_temp_corrected) '      Heating cell to reaction temp...']);
set_slide_temp(ENZYME_TEMP);

disp([timestamp(clock) ' ' num2str(get_slide_temp) ' ' num2str(get_slide_temp_corrected) '      Wash needle']);
out = ll_needle_wash();

%Perform reaction
disp([timestamp(clock) ' ' num2str(get_slide_temp) ' ' num2str(get_slide_temp_corrected) '      Reaction proceeding for ' num2str(STRIP_TIME / 60) ' min.']);
for(i = 1:20)
    disp([timestamp(clock) ' ' num2str(get_slide_temp) ' ' num2str(get_slide_temp_corrected)]);
pause((STRIP_TIME / 20));
end


% Wash out enzyme
disp([timestamp(clock) ' ' num2str(get_slide_temp) ' ' num2str(get_slide_temp_corrected) '      Washing reagent out (5 washes)']);
disp([timestamp(clock) ' ' num2str(get_slide_temp) ' ' num2str(get_slide_temp_corrected) '      Wash 1 of 5: ' num2str(buffer_start)]);
out = ll_draw_buffer_fast(500);

disp([timestamp(clock) ' ' num2str(get_slide_temp) ' ' num2str(get_slide_temp_corrected) '      Wash 2 of 5: ' num2str(buffer_start)]);
out = ll_draw_buffer_fast(500);

disp([timestamp(clock) ' ' num2str(get_slide_temp) ' ' num2str(get_slide_temp_corrected) '      Wash 3 of 5: ' num2str(buffer_start)]);
out = ll_draw_buffer_fast(500);

disp([timestamp(clock) ' ' num2str(get_slide_temp) ' ' num2str(get_slide_temp_corrected) '      Wash 4 of 5: ' num2str(buffer_start)]);
out = ll_draw_buffer(500);

disp([timestamp(clock) ' ' num2str(get_slide_temp) ' ' num2str(get_slide_temp_corrected) '      Wash 5 of 5: ' num2str(buffer_start)]);
out = ll_draw_buffer(500);

disp([timestamp(clock) ' ' num2str(get_slide_temp) ' ' num2str(get_slide_temp_corrected) '      Reaction completed.']);

