diff --git a/.nojekyll b/.nojekyll
index dea348f..a5bb835 100644
--- a/.nojekyll
+++ b/.nojekyll
@@ -1 +1 @@
-fcf03ed7
\ No newline at end of file
+a9dab018
\ No newline at end of file
diff --git a/exercises.html b/exercises.html
index 7bc8167..14ae2df 100644
--- a/exercises.html
+++ b/exercises.html
@@ -154,15 +154,15 @@ <h1 class="title">Exercises</h1>
 <h2 class="anchored" data-anchor-id="instructions">Instructions</h2>
 <div class="cell">
 <div class="cell-output-display">
-<div class="accordion mb-5" data-require-bs-caller="accordion()" data-require-bs-version="5" id="bslib-accordion-8706">
+<div class="accordion mb-5" data-require-bs-caller="accordion()" data-require-bs-version="5" id="bslib-accordion-5244">
 <div class="accordion-item" data-value="Exercise 1: a palmer penguins, single stack.">
 <div class="accordion-header">
-<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#bslib-accordion-panel-9353" aria-controls="bslib-accordion-panel-9353" aria-expanded="true">
+<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#bslib-accordion-panel-6509" aria-controls="bslib-accordion-panel-6509" aria-expanded="true">
 <div class="accordion-icon"></div>
 <div class="accordion-title">Exercise 1: a palmer penguins, single stack.</div>
 </button>
 </div>
-<div id="bslib-accordion-panel-9353" class="accordion-collapse collapse show">
+<div id="bslib-accordion-panel-6509" class="accordion-collapse collapse show">
 <div class="accordion-body">
 <ol>
 <li>
@@ -224,12 +224,12 @@ <h2 class="anchored" data-anchor-id="instructions">Instructions</h2>
 </div>
 <div class="accordion-item" data-value="Exercise 2: distribution of age, single stack.">
 <div class="accordion-header">
-<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#bslib-accordion-panel-6998" aria-expanded="false" aria-controls="bslib-accordion-panel-6998">
+<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#bslib-accordion-panel-2639" aria-expanded="false" aria-controls="bslib-accordion-panel-2639">
 <div class="accordion-icon"></div>
 <div class="accordion-title">Exercise 2: distribution of age, single stack.</div>
 </button>
 </div>
-<div id="bslib-accordion-panel-6998" class="accordion-collapse collapse">
+<div id="bslib-accordion-panel-2639" class="accordion-collapse collapse">
 <div class="accordion-body">
 <ol>
 <li>
@@ -300,12 +300,12 @@ <h2 class="anchored" data-anchor-id="instructions">Instructions</h2>
 </div>
 <div class="accordion-item" data-value="Exercise 3: a palmer penguins workspace.">
 <div class="accordion-header">
-<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#bslib-accordion-panel-1252" aria-expanded="false" aria-controls="bslib-accordion-panel-1252">
+<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#bslib-accordion-panel-3353" aria-expanded="false" aria-controls="bslib-accordion-panel-3353">
 <div class="accordion-icon"></div>
 <div class="accordion-title">Exercise 3: a palmer penguins workspace.</div>
 </button>
 </div>
-<div id="bslib-accordion-panel-1252" class="accordion-collapse collapse">
+<div id="bslib-accordion-panel-3353" class="accordion-collapse collapse">
 <div class="accordion-body">
 <ol>
 <li>
@@ -366,148 +366,81 @@ <h2 class="anchored" data-anchor-id="instructions">Instructions</h2>
 </div>
 </div>
 </div>
-<div class="accordion-item" data-value="Exercise 4: 'Hemoglobin by Visit plot' workspace.">
+<div class="accordion-item" data-value="Exercise 4: joining data.">
 <div class="accordion-header">
-<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#bslib-accordion-panel-5688" aria-expanded="false" aria-controls="bslib-accordion-panel-5688">
+<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#bslib-accordion-panel-8168" aria-expanded="false" aria-controls="bslib-accordion-panel-8168">
 <div class="accordion-icon"></div>
-<div class="accordion-title">Exercise 4: 'Hemoglobin by Visit plot' workspace.</div>
+<div class="accordion-title">Exercise 4: joining data.</div>
 </button>
 </div>
-<div id="bslib-accordion-panel-5688" class="accordion-collapse collapse">
+<div id="bslib-accordion-panel-8168" class="accordion-collapse collapse">
 <div class="accordion-body">
 <ol>
 <li>
 <p>
 Click on
 <strong>Add stack</strong>
-then add it a
-<strong>customdata_block</strong>
-with
-<var>lab</var>
-as data. Change the title to 'Lab data'.
-</p>
-</li>
-<li>
-<ul>
-<li>
-<p>
-Click on
-<strong>Add stack</strong>
-, then add a
-<code>customdata_block</code>
-with
-<var>demo</var>
-as data.
-</p>
-</li>
-<li>
-<p>
-Add a
-<strong>join_block</strong>
-with
-<code>y = 'lab_data'</code>
-<code>type = 'inner</code>
-<code>by = c('STUDYID', 'USUBJID')</code>
-.
-</p>
-</li>
-<li>
-<p>
-Add a
-<strong>filter_block</strong>
-with
-<code>colums = 'LBTEST'</code>
-<code>values = 'Hemoglobin</code>
 .
 </p>
 </li>
 <li>
 <p>
-Add an
-<code>arrange_block</code>
-width
-<var>VISITNUM</var>
-as column.
-</p>
-</li>
-<li>
-<p>
-Add a
-<code>mutate_block</code>
-with the following expression:
-<code>VISIT = factor(VISIT, levels = unique(VISIT), ordered = TRUE)</code>
+From the new stack: click on
+<strong>+</strong>
+to add a new
+<code>customdata_block</code>
+ with
+<var>lab</var>
+ as selected data.
 </p>
 </li>
-<li>Rename the stack to 'Hemoglobin data'</li>
-</ul>
-</li>
-<li>
-<ul>
 <li>
 <p>
 Click on
 <strong>Add stack</strong>
-then add a
-<code>result_block</code>
-selecting the 'hemoglobin_data' stack.
+.
 </p>
 </li>
 <li>
 <p>
-Add a
-<code>group_by_block</code>
-with
-<var>VISIT</var>
+Add a new
+<code>join_block</code>
+selecting
+<var>lab_data</var>
+as
+<strong>Stack</strong>
 and
-<var>ACTARM</var>
-as columns
-</p>
-</li>
-<li>
-<p>
-Add a
-<code>summarize_block</code>
-with
-<var>mean</var>
+<var>inner</var>
+as
+<strong>type</strong>
 and
-<var>se</var>
-as selected functions and
-<var>LBSTRESN</var>
-as column for each function.
-</p>
-</li>
-<li>
-<p>
-Add an
-<code>ungroup_block</code>
-.
-</p>
-</li>
-<li>
-<p>
-Add a
-<code>mutate_block</code>
-with
-<code>ymin = 'MEAN - SE'</code>
-and then click
-<strong>+</strong>
-to add another expression, that is, 
-<code>ymax = 'MEAN + SE'</code>
-.
+<var>c('STUDYID', 'USUBJID')</var>
+as
+<strong>by</strong>
+. Click on run.
 </p>
 </li>
-<li>Rename the stack to 'Summary data'</li>
-</ul>
-</li>
-<li>
-<ul>
+</ol>
+</div>
+</div>
+</div>
+<div class="accordion-item" data-value="Exercise 5: 'Hemoglobin by Visit plot' workspace.">
+<div class="accordion-header">
+<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#bslib-accordion-panel-6536" aria-expanded="false" aria-controls="bslib-accordion-panel-6536">
+<div class="accordion-icon"></div>
+<div class="accordion-title">Exercise 5: 'Hemoglobin by Visit plot' workspace.</div>
+</button>
+</div>
+<div id="bslib-accordion-panel-6536" class="accordion-collapse collapse">
+<div class="accordion-body">
+<ol>
 <li>
 <p>
 Click on
 <strong>Add stack</strong>
 then add a
 <code>result_block</code>
-selecting the 'summary_data' stack.
+selecting the 'hb_data' stack.
 </p>
 </li>
 <li>
@@ -517,7 +450,7 @@ <h2 class="anchored" data-anchor-id="instructions">Instructions</h2>
 with
 <code>x = 'VISIT</code>
 and
-<code>x = 'MEAN</code>
+<code>y = 'Mean</code>
 as aesthetics.
 </p>
 </li>
@@ -574,8 +507,6 @@ <h2 class="anchored" data-anchor-id="instructions">Instructions</h2>
 .
 </p>
 </li>
-</ul>
-</li>
 </ol>
 </div>
 </div>
diff --git a/search.json b/search.json
index 90e2df4..f40fa03 100644
--- a/search.json
+++ b/search.json
@@ -4,14 +4,14 @@
     "href": "exercises.html",
     "title": "Exercises",
     "section": "",
-    "text": "Exercise 1: a palmer penguins, single stack.\n\n\n\n\n\n\n\nClick on the stack\n+\nbutton (top right corner).\n\n\n\n\nAdd a\npalmer_penguins\nblock. You may search in the list.\n\n\n\n\nAdd a new\nfilter_block\nselecting\nsex\nas\ncolumn\nand\nfemale\nas\nvalue\n. Click on run.\n\n\n\n\nAdd a new\nggplot_block\n. Select\nx\nand\ny\nwizely.\n\n\n\n\nAdd a new\ngeompoint_block\n. You may change\nshape\nand\ncolor\n.\n\n\nYou can remove and re-add blocks as you like ...\nExport the stack code and try to run it.\n\n\n\n\n\n\n\n\nExercise 2: distribution of age, single stack.\n\n\n\n\n\n\n\nClick on the\n+\nstack button (top right corner).\n\n\n\n\nAdd a\ncustomdata_block\nwith\ndemo\nas\nselected\ndataset.\n\n\n\n\nAdd a\nggplot_block\nwith\nAGE\n as variable for the\nx\naxis.\n\n\n\n\nAdd a\ngeomhistogram_block\n. You can change the parameters.\n\n\n\n\nAdd a\nlabs_block\nwith\ntitle = 'Distribution of Age'\nx = 'Age (Years)'\nand\ny = 'Count'\nas settings.\n\n\n\n\nAdd a\ntheme_block\n.\n\n\n\n\nAdd a\nscalefillbrewer_block\n.\n\n\n\n\n\n\n\n\n\n\nExercise 3: a palmer penguins workspace.\n\n\n\n\n\n\n\nClick on\nAdd stack\n.\n\n\n\n\nFrom the new stack: click on\n+\nto add a new\nresult_block\n.\n\n\n\n\nAdd a new\nfilter_block\nselecting\nsex\nas\ncolumn\nand\nfemale\nas\nvalue\n. Click on run.\n\n\nNotice how the result block of the second stack changes.\n\n\nAdd a new\nggplot_block\n. Select\nx\nand\ny\nwizely.\n\n\n\n\nAdd a new\ngeompoint_block\n. You may change\nshape\nand\ncolor\n.\n\n\n\n\n\n\n\n\n\n\nExercise 4: 'Hemoglobin by Visit plot' workspace.\n\n\n\n\n\n\n\nClick on\nAdd stack\nthen add it a\ncustomdata_block\nwith\nlab\nas data. Change the title to 'Lab data'.\n\n\n\n\n\n\nClick on\nAdd stack\n, then add a\ncustomdata_block\nwith\ndemo\nas data.\n\n\n\n\nAdd a\njoin_block\nwith\ny = 'lab_data'\ntype = 'inner\nby = c('STUDYID', 'USUBJID')\n.\n\n\n\n\nAdd a\nfilter_block\nwith\ncolums = 'LBTEST'\nvalues = 'Hemoglobin\n.\n\n\n\n\nAdd an\narrange_block\nwidth\nVISITNUM\nas column.\n\n\n\n\nAdd a\nmutate_block\nwith the following expression:\nVISIT = factor(VISIT, levels = unique(VISIT), ordered = TRUE)\n\n\nRename the stack to 'Hemoglobin data'\n\n\n\n\n\n\nClick on\nAdd stack\nthen add a\nresult_block\nselecting the 'hemoglobin_data' stack.\n\n\n\n\nAdd a\ngroup_by_block\nwith\nVISIT\nand\nACTARM\nas columns\n\n\n\n\nAdd a\nsummarize_block\nwith\nmean\nand\nse\nas selected functions and\nLBSTRESN\nas column for each function.\n\n\n\n\nAdd an\nungroup_block\n.\n\n\n\n\nAdd a\nmutate_block\nwith\nymin = 'MEAN - SE'\nand then click\n+\nto add another expression, that is, \nymax = 'MEAN + SE'\n.\n\n\nRename the stack to 'Summary data'\n\n\n\n\n\n\nClick on\nAdd stack\nthen add a\nresult_block\nselecting the 'summary_data' stack.\n\n\n\n\nAdd a\nggplot_block\nwith\nx = 'VISIT\nand\nx = 'MEAN\nas aesthetics.\n\n\n\n\nAdd a\ngeompoint_block\nwith\nfunc = c('color', 'shape')\nand\nACTARM\nas variable for each aesthetic.\n\n\n\n\nAdd a\ngeomerrorbar_block\nwith\nymin = ymin\nymax = ymax\nand\ncolor = ACTARM\n.\n\n\n\n\nAdd a\ngeomline_block\nwith\ngroup = ACTARM\nand\ncolor = ACTARM\n.\n\n\n\n\nAdd a\nlabs_block\nwith\ntitle = 'Mean and SD of Hemoglobin by Visit'\nx = 'Visit Label'\nand\ny = 'Hemoglobin (g/dL)'\n.\n\n\n\n\nAdd a\ntheme_block\n."
+    "text": "Exercise 1: a palmer penguins, single stack.\n\n\n\n\n\n\n\nClick on the stack\n+\nbutton (top right corner).\n\n\n\n\nAdd a\npalmer_penguins\nblock. You may search in the list.\n\n\n\n\nAdd a new\nfilter_block\nselecting\nsex\nas\ncolumn\nand\nfemale\nas\nvalue\n. Click on run.\n\n\n\n\nAdd a new\nggplot_block\n. Select\nx\nand\ny\nwizely.\n\n\n\n\nAdd a new\ngeompoint_block\n. You may change\nshape\nand\ncolor\n.\n\n\nYou can remove and re-add blocks as you like ...\nExport the stack code and try to run it.\n\n\n\n\n\n\n\n\nExercise 2: distribution of age, single stack.\n\n\n\n\n\n\n\nClick on the\n+\nstack button (top right corner).\n\n\n\n\nAdd a\ncustomdata_block\nwith\ndemo\nas\nselected\ndataset.\n\n\n\n\nAdd a\nggplot_block\nwith\nAGE\n as variable for the\nx\naxis.\n\n\n\n\nAdd a\ngeomhistogram_block\n. You can change the parameters.\n\n\n\n\nAdd a\nlabs_block\nwith\ntitle = 'Distribution of Age'\nx = 'Age (Years)'\nand\ny = 'Count'\nas settings.\n\n\n\n\nAdd a\ntheme_block\n.\n\n\n\n\nAdd a\nscalefillbrewer_block\n.\n\n\n\n\n\n\n\n\n\n\nExercise 3: a palmer penguins workspace.\n\n\n\n\n\n\n\nClick on\nAdd stack\n.\n\n\n\n\nFrom the new stack: click on\n+\nto add a new\nresult_block\n.\n\n\n\n\nAdd a new\nfilter_block\nselecting\nsex\nas\ncolumn\nand\nfemale\nas\nvalue\n. Click on run.\n\n\nNotice how the result block of the second stack changes.\n\n\nAdd a new\nggplot_block\n. Select\nx\nand\ny\nwizely.\n\n\n\n\nAdd a new\ngeompoint_block\n. You may change\nshape\nand\ncolor\n.\n\n\n\n\n\n\n\n\n\n\nExercise 4: joining data.\n\n\n\n\n\n\n\nClick on\nAdd stack\n.\n\n\n\n\nFrom the new stack: click on\n+\nto add a new\ncustomdata_block\n with\nlab\n as selected data.\n\n\n\n\nClick on\nAdd stack\n.\n\n\n\n\nAdd a new\njoin_block\nselecting\nlab_data\nas\nStack\nand\ninner\nas\ntype\nand\nc('STUDYID', 'USUBJID')\nas\nby\n. Click on run.\n\n\n\n\n\n\n\n\n\n\nExercise 5: 'Hemoglobin by Visit plot' workspace.\n\n\n\n\n\n\n\nClick on\nAdd stack\nthen add a\nresult_block\nselecting the 'hb_data' stack.\n\n\n\n\nAdd a\nggplot_block\nwith\nx = 'VISIT\nand\ny = 'Mean\nas aesthetics.\n\n\n\n\nAdd a\ngeompoint_block\nwith\nfunc = c('color', 'shape')\nand\nACTARM\nas variable for each aesthetic.\n\n\n\n\nAdd a\ngeomerrorbar_block\nwith\nymin = ymin\nymax = ymax\nand\ncolor = ACTARM\n.\n\n\n\n\nAdd a\ngeomline_block\nwith\ngroup = ACTARM\nand\ncolor = ACTARM\n.\n\n\n\n\nAdd a\nlabs_block\nwith\ntitle = 'Mean and SD of Hemoglobin by Visit'\nx = 'Visit Label'\nand\ny = 'Hemoglobin (g/dL)'\n.\n\n\n\n\nAdd a\ntheme_block\n."
   },
   {
     "objectID": "exercises.html#instructions",
     "href": "exercises.html#instructions",
     "title": "Exercises",
     "section": "",
-    "text": "Exercise 1: a palmer penguins, single stack.\n\n\n\n\n\n\n\nClick on the stack\n+\nbutton (top right corner).\n\n\n\n\nAdd a\npalmer_penguins\nblock. You may search in the list.\n\n\n\n\nAdd a new\nfilter_block\nselecting\nsex\nas\ncolumn\nand\nfemale\nas\nvalue\n. Click on run.\n\n\n\n\nAdd a new\nggplot_block\n. Select\nx\nand\ny\nwizely.\n\n\n\n\nAdd a new\ngeompoint_block\n. You may change\nshape\nand\ncolor\n.\n\n\nYou can remove and re-add blocks as you like ...\nExport the stack code and try to run it.\n\n\n\n\n\n\n\n\nExercise 2: distribution of age, single stack.\n\n\n\n\n\n\n\nClick on the\n+\nstack button (top right corner).\n\n\n\n\nAdd a\ncustomdata_block\nwith\ndemo\nas\nselected\ndataset.\n\n\n\n\nAdd a\nggplot_block\nwith\nAGE\n as variable for the\nx\naxis.\n\n\n\n\nAdd a\ngeomhistogram_block\n. You can change the parameters.\n\n\n\n\nAdd a\nlabs_block\nwith\ntitle = 'Distribution of Age'\nx = 'Age (Years)'\nand\ny = 'Count'\nas settings.\n\n\n\n\nAdd a\ntheme_block\n.\n\n\n\n\nAdd a\nscalefillbrewer_block\n.\n\n\n\n\n\n\n\n\n\n\nExercise 3: a palmer penguins workspace.\n\n\n\n\n\n\n\nClick on\nAdd stack\n.\n\n\n\n\nFrom the new stack: click on\n+\nto add a new\nresult_block\n.\n\n\n\n\nAdd a new\nfilter_block\nselecting\nsex\nas\ncolumn\nand\nfemale\nas\nvalue\n. Click on run.\n\n\nNotice how the result block of the second stack changes.\n\n\nAdd a new\nggplot_block\n. Select\nx\nand\ny\nwizely.\n\n\n\n\nAdd a new\ngeompoint_block\n. You may change\nshape\nand\ncolor\n.\n\n\n\n\n\n\n\n\n\n\nExercise 4: 'Hemoglobin by Visit plot' workspace.\n\n\n\n\n\n\n\nClick on\nAdd stack\nthen add it a\ncustomdata_block\nwith\nlab\nas data. Change the title to 'Lab data'.\n\n\n\n\n\n\nClick on\nAdd stack\n, then add a\ncustomdata_block\nwith\ndemo\nas data.\n\n\n\n\nAdd a\njoin_block\nwith\ny = 'lab_data'\ntype = 'inner\nby = c('STUDYID', 'USUBJID')\n.\n\n\n\n\nAdd a\nfilter_block\nwith\ncolums = 'LBTEST'\nvalues = 'Hemoglobin\n.\n\n\n\n\nAdd an\narrange_block\nwidth\nVISITNUM\nas column.\n\n\n\n\nAdd a\nmutate_block\nwith the following expression:\nVISIT = factor(VISIT, levels = unique(VISIT), ordered = TRUE)\n\n\nRename the stack to 'Hemoglobin data'\n\n\n\n\n\n\nClick on\nAdd stack\nthen add a\nresult_block\nselecting the 'hemoglobin_data' stack.\n\n\n\n\nAdd a\ngroup_by_block\nwith\nVISIT\nand\nACTARM\nas columns\n\n\n\n\nAdd a\nsummarize_block\nwith\nmean\nand\nse\nas selected functions and\nLBSTRESN\nas column for each function.\n\n\n\n\nAdd an\nungroup_block\n.\n\n\n\n\nAdd a\nmutate_block\nwith\nymin = 'MEAN - SE'\nand then click\n+\nto add another expression, that is, \nymax = 'MEAN + SE'\n.\n\n\nRename the stack to 'Summary data'\n\n\n\n\n\n\nClick on\nAdd stack\nthen add a\nresult_block\nselecting the 'summary_data' stack.\n\n\n\n\nAdd a\nggplot_block\nwith\nx = 'VISIT\nand\nx = 'MEAN\nas aesthetics.\n\n\n\n\nAdd a\ngeompoint_block\nwith\nfunc = c('color', 'shape')\nand\nACTARM\nas variable for each aesthetic.\n\n\n\n\nAdd a\ngeomerrorbar_block\nwith\nymin = ymin\nymax = ymax\nand\ncolor = ACTARM\n.\n\n\n\n\nAdd a\ngeomline_block\nwith\ngroup = ACTARM\nand\ncolor = ACTARM\n.\n\n\n\n\nAdd a\nlabs_block\nwith\ntitle = 'Mean and SD of Hemoglobin by Visit'\nx = 'Visit Label'\nand\ny = 'Hemoglobin (g/dL)'\n.\n\n\n\n\nAdd a\ntheme_block\n."
+    "text": "Exercise 1: a palmer penguins, single stack.\n\n\n\n\n\n\n\nClick on the stack\n+\nbutton (top right corner).\n\n\n\n\nAdd a\npalmer_penguins\nblock. You may search in the list.\n\n\n\n\nAdd a new\nfilter_block\nselecting\nsex\nas\ncolumn\nand\nfemale\nas\nvalue\n. Click on run.\n\n\n\n\nAdd a new\nggplot_block\n. Select\nx\nand\ny\nwizely.\n\n\n\n\nAdd a new\ngeompoint_block\n. You may change\nshape\nand\ncolor\n.\n\n\nYou can remove and re-add blocks as you like ...\nExport the stack code and try to run it.\n\n\n\n\n\n\n\n\nExercise 2: distribution of age, single stack.\n\n\n\n\n\n\n\nClick on the\n+\nstack button (top right corner).\n\n\n\n\nAdd a\ncustomdata_block\nwith\ndemo\nas\nselected\ndataset.\n\n\n\n\nAdd a\nggplot_block\nwith\nAGE\n as variable for the\nx\naxis.\n\n\n\n\nAdd a\ngeomhistogram_block\n. You can change the parameters.\n\n\n\n\nAdd a\nlabs_block\nwith\ntitle = 'Distribution of Age'\nx = 'Age (Years)'\nand\ny = 'Count'\nas settings.\n\n\n\n\nAdd a\ntheme_block\n.\n\n\n\n\nAdd a\nscalefillbrewer_block\n.\n\n\n\n\n\n\n\n\n\n\nExercise 3: a palmer penguins workspace.\n\n\n\n\n\n\n\nClick on\nAdd stack\n.\n\n\n\n\nFrom the new stack: click on\n+\nto add a new\nresult_block\n.\n\n\n\n\nAdd a new\nfilter_block\nselecting\nsex\nas\ncolumn\nand\nfemale\nas\nvalue\n. Click on run.\n\n\nNotice how the result block of the second stack changes.\n\n\nAdd a new\nggplot_block\n. Select\nx\nand\ny\nwizely.\n\n\n\n\nAdd a new\ngeompoint_block\n. You may change\nshape\nand\ncolor\n.\n\n\n\n\n\n\n\n\n\n\nExercise 4: joining data.\n\n\n\n\n\n\n\nClick on\nAdd stack\n.\n\n\n\n\nFrom the new stack: click on\n+\nto add a new\ncustomdata_block\n with\nlab\n as selected data.\n\n\n\n\nClick on\nAdd stack\n.\n\n\n\n\nAdd a new\njoin_block\nselecting\nlab_data\nas\nStack\nand\ninner\nas\ntype\nand\nc('STUDYID', 'USUBJID')\nas\nby\n. Click on run.\n\n\n\n\n\n\n\n\n\n\nExercise 5: 'Hemoglobin by Visit plot' workspace.\n\n\n\n\n\n\n\nClick on\nAdd stack\nthen add a\nresult_block\nselecting the 'hb_data' stack.\n\n\n\n\nAdd a\nggplot_block\nwith\nx = 'VISIT\nand\ny = 'Mean\nas aesthetics.\n\n\n\n\nAdd a\ngeompoint_block\nwith\nfunc = c('color', 'shape')\nand\nACTARM\nas variable for each aesthetic.\n\n\n\n\nAdd a\ngeomerrorbar_block\nwith\nymin = ymin\nymax = ymax\nand\ncolor = ACTARM\n.\n\n\n\n\nAdd a\ngeomline_block\nwith\ngroup = ACTARM\nand\ncolor = ACTARM\n.\n\n\n\n\nAdd a\nlabs_block\nwith\ntitle = 'Mean and SD of Hemoglobin by Visit'\nx = 'Visit Label'\nand\ny = 'Hemoglobin (g/dL)'\n.\n\n\n\n\nAdd a\ntheme_block\n."
   },
   {
     "objectID": "exercises.html#playground",
@@ -126,11 +126,18 @@
     "text": "How do I create a workspace?\n\nlibrary(blockr)\n# Creates an empty workspace\n1set_workspace(\n2  stack_1 = new_stack(),\n  stack_2 = new_stack()\n)\n3serve_workspace(clear = FALSE)\n\n\n1\n\nInitialise.\n\n2\n\nOptional: add stacks.\n\n3\n\nServe Shiny app."
   },
   {
-    "objectID": "slides/1-blockr-user/blockr-user.html#exercise-4-with-pharma-data",
-    "href": "slides/1-blockr-user/blockr-user.html#exercise-4-with-pharma-data",
+    "objectID": "slides/1-blockr-user/blockr-user.html#exercise-4-joining-data",
+    "href": "slides/1-blockr-user/blockr-user.html#exercise-4-joining-data",
     "title": "Introduction to blockr for users",
-    "section": "🧪 Exercise 4: with pharma data",
-    "text": "🧪 Exercise 4: with pharma data\n\n\n\n\nClick on Add stack, then add it a customdata_block with lab data. Change the title to Lab data.\nClick on Add stack, then add a customdata_block with demo data:\n\nAdd a join_block with y = \"lab_data\", type = \"inner\", by = c(\"STUDYID\", \"USUBJID\").\nAdd a filter_block with columns = \"LBTEST\", values = \"Hemoglobin\".\nAdd an arrange_block with VISITNUM.\nAdd a mutate_block with the following expression: VISIT = factor(VISIT, levels = unique(VISIT), ordered = TRUE).\nRename the stack to Hemoglobin data.\n\nClick on Add stack, then add a result_block selecting the Hemoglobin_data stack:\n\nAdd a group_by_block with \"VISIT and ACTARM as columns.\nAdd a summarize_block with func = c(\"mean\", \"se\"), default_columns = c(\"LBSTRESN\", \"LBSTRESN\").\nAdd an ungroup_block.\nAdd a mutate_block with ymin = \"MEAN -SE\" and then click + to add another expression, ymax = \"MEAN + SE\".\nChange the stack title to Summary data.\n\n\n\n\n\n\nClick on Add stack, then add a result_block, targeting the Summary data stack:\n\nAdd a ggplot_block with x = \"VISIT\" and y = \"MEAN\" as aesthetics.\nAdd a geompoint_block with func = c(\"color\", \"shape\") and default_columns = c(\"ACTARM\", \"ACTARM\").\nAdd a geomerrorbar_block with ymin = ymin, ymax = ymax and color = ACTARM.\nAdd a geomline_block with group = ACTARM and color = ACTARM.\nAdd a labs_block with title = \"Mean and SD of Hemoglobin by Visit\", x = \"Visit Label\" and y = \"Hemoglobin (g/dL)\".\nAdd a theme_block, selecting whatever theme you like.\nTBC…"
+    "section": "Exercise 4: joining data",
+    "text": "Exercise 4: joining data\n\n\n\n\n\n\n\n\n\nClick on Add stack, then add it a customdata_block with lab data.\nClick on Add stack.\n\nAdd a customdata_block with demo data.\nAdd a join_block with Stack = \"lab_data\", type = \"inner\", by = c(\"STUDYID\", \"USUBJID\")"
+  },
+  {
+    "objectID": "slides/1-blockr-user/blockr-user.html#exercise-5-hemoglobin-by-visit-plot",
+    "href": "slides/1-blockr-user/blockr-user.html#exercise-5-hemoglobin-by-visit-plot",
+    "title": "Introduction to blockr for users",
+    "section": "🧪 Exercise 5: Hemoglobin by Visit plot",
+    "text": "🧪 Exercise 5: Hemoglobin by Visit plot\n\n\n\n\n\n\n\n\n\nConsider the previous 2 stacks (lab data merged with demo data).\nClick on Add stack, then add a result_block, targeting the hb_data stack:\n\nAdd a ggplot_block with x = \"VISIT\" and y = \"Mean\" as aesthetics.\nAdd a geompoint_block with func = c(\"color\", \"shape\") and default_columns = c(\"ACTARM\", \"ACTARM\").\nAdd a geomerrorbar_block with ymin = ymin, ymax = ymax and color = ACTARM.\nAdd a geomline_block with group = ACTARM and color = ACTARM.\nAdd a labs_block with title = \"Mean and SD of Hemoglobin by Visit\", x = \"Visit Label\" and y = \"Hemoglobin (g/dL)\".\nAdd a theme_block, selecting whatever theme you like.\nTBC…"
   },
   {
     "objectID": "slides/1-blockr-user/blockr-user.html#how-far-can-i-go-with-blockr",
diff --git a/sitemap.xml b/sitemap.xml
index 79fe4a3..1143007 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -2,26 +2,26 @@
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <url>
     <loc>https://BristolMyersSquibb.github.io/blockr.workshop/exercises.html</loc>
-    <lastmod>2024-10-27T07:32:52.652Z</lastmod>
+    <lastmod>2024-10-28T13:45:47.746Z</lastmod>
   </url>
   <url>
     <loc>https://BristolMyersSquibb.github.io/blockr.workshop/slides/1-blockr-user/blockr-user.html</loc>
-    <lastmod>2024-10-27T07:32:53.056Z</lastmod>
+    <lastmod>2024-10-28T13:45:48.142Z</lastmod>
   </url>
   <url>
     <loc>https://BristolMyersSquibb.github.io/blockr.workshop/index.html</loc>
-    <lastmod>2024-10-27T07:32:52.652Z</lastmod>
+    <lastmod>2024-10-28T13:45:47.746Z</lastmod>
   </url>
   <url>
     <loc>https://BristolMyersSquibb.github.io/blockr.workshop/about.html</loc>
-    <lastmod>2024-10-27T07:32:52.628Z</lastmod>
+    <lastmod>2024-10-28T13:45:47.722Z</lastmod>
   </url>
   <url>
     <loc>https://BristolMyersSquibb.github.io/blockr.workshop/slides/0-welcome/welcome.html</loc>
-    <lastmod>2024-10-27T07:32:53.056Z</lastmod>
+    <lastmod>2024-10-28T13:45:48.142Z</lastmod>
   </url>
   <url>
     <loc>https://BristolMyersSquibb.github.io/blockr.workshop/slides/2-blockr-dev/blockr-dev.html</loc>
-    <lastmod>2024-10-27T07:32:53.056Z</lastmod>
+    <lastmod>2024-10-28T13:45:48.142Z</lastmod>
   </url>
 </urlset>
diff --git a/slides/0-welcome/welcome.html b/slides/0-welcome/welcome.html
index b1859bd..61dbbb0 100644
--- a/slides/0-welcome/welcome.html
+++ b/slides/0-welcome/welcome.html
@@ -10,7 +10,7 @@
 <link href="../../site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles"><meta charset="utf-8">
   <meta name="generator" content="quarto-1.5.57">
 
-  <meta name="author" content="Karma Tarap (BMS), John Coene (The Y Company) and David Granjon (cynkra GmbH)">
+  <meta name="author" content="David Granjon (cynkra GmbH), Karma Tarap (BMS) and John Coene (The Y Company)">
   <title>blockr.workshop – Introduction</title>
   <meta name="apple-mobile-web-app-capable" content="yes">
   <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
@@ -331,7 +331,7 @@ <h1 class="title">Introduction</h1>
 <div class="quarto-title-authors">
 <div class="quarto-title-author">
 <div class="quarto-title-author-name">
-Karma Tarap (BMS), John Coene (The Y Company) and David Granjon (cynkra GmbH) 
+David Granjon (cynkra GmbH), Karma Tarap (BMS) and John Coene (The Y Company) 
 </div>
 </div>
 </div>
diff --git a/slides/1-blockr-user/blockr-user.html b/slides/1-blockr-user/blockr-user.html
index 68b3ad7..7eab8e7 100644
--- a/slides/1-blockr-user/blockr-user.html
+++ b/slides/1-blockr-user/blockr-user.html
@@ -10,7 +10,7 @@
 <link href="../../site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles"><meta charset="utf-8">
   <meta name="generator" content="quarto-1.5.57">
 
-  <meta name="author" content="Karma Tarap (BMS), John Coene (The Y Company) and David Granjon (cynkra GmbH)">
+  <meta name="author" content="David Granjon (cynkra GmbH), Karma Tarap (BMS) and John Coene (The Y Company)">
   <title>blockr.workshop – Introduction to blockr for users</title>
   <meta name="apple-mobile-web-app-capable" content="yes">
   <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
@@ -400,7 +400,7 @@ <h1 class="title">Introduction to blockr for users</h1>
 <div class="quarto-title-authors">
 <div class="quarto-title-author">
 <div class="quarto-title-author-name">
-Karma Tarap (BMS), John Coene (The Y Company) and David Granjon (cynkra GmbH) 
+David Granjon (cynkra GmbH), Karma Tarap (BMS) and John Coene (The Y Company) 
 </div>
 </div>
 </div>
@@ -843,46 +843,49 @@ <h2>How do I create a workspace?</h2>
 </div>
 </div>
 </section>
-<section id="exercise-4-with-pharma-data" class="slide level2">
-<h2>🧪 Exercise 4: with pharma data</h2>
+<section id="exercise-4-joining-data" class="slide level2">
+<h2>Exercise 4: joining data</h2>
 <div class="columns" style="font-size: 0.75em">
-<div class="column">
-<div>
+<div class="column" style="width:60%;">
+<div class="cell">
+<div class="cell-output-display">
+<iframe class="html-fill-item" src="https://rinpharma2024.rinterface.com/#exercise-4" height="800" width="100%" style="border: 1px solid rgba(0,0,0,0.175); border-radius: .375rem;" allowfullscreen="" allow="autoplay" data-external="1"></iframe>
+</div>
+</div>
+</div><div class="column" style="width:40%;">
 <ol type="1">
-<li class="fragment"><p>Click on <code>Add stack</code>, then add it a <code>customdata_block</code> with <code>lab</code> data. Change the title to <code>Lab data</code>.</p></li>
-<li class="fragment"><p>Click on <code>Add stack</code>, then add a <code>customdata_block</code> with <code>demo</code> data:</p>
-<ol type="a">
-<li class="fragment">Add a <code>join_block</code> with <code>y = "lab_data"</code>, <code>type = "inner"</code>, <code>by = c("STUDYID", "USUBJID")</code>.</li>
-<li class="fragment">Add a <code>filter_block</code> with <code>columns = "LBTEST"</code>, <code>values = "Hemoglobin"</code>.</li>
-<li class="fragment">Add an <code>arrange_block</code> with <code>VISITNUM</code>.</li>
-<li class="fragment">Add a <code>mutate_block</code> with the following expression: <code>VISIT = factor(VISIT, levels = unique(VISIT), ordered = TRUE)</code>.</li>
-<li class="fragment">Rename the stack to <code>Hemoglobin data</code>.</li>
-</ol></li>
-<li class="fragment"><p>Click on <code>Add stack</code>, then add a <code>result_block</code> selecting the <code>Hemoglobin_data</code> stack:</p>
+<li><p>Click on <code>Add stack</code>, then add it a <code>customdata_block</code> with <code>lab</code> data.</p></li>
+<li><p>Click on <code>Add stack</code>.</p>
 <ol type="a">
-<li class="fragment">Add a <code>group_by_block</code> with <code>"VISIT</code> and <code>ACTARM</code> as columns.</li>
-<li class="fragment">Add a <code>summarize_block</code> with <code>func = c("mean", "se")</code>, <code>default_columns = c("LBSTRESN", "LBSTRESN")</code>.</li>
-<li class="fragment">Add an <code>ungroup_block</code>.</li>
-<li class="fragment">Add a <code>mutate_block</code> with <code>ymin = "MEAN -SE"</code> and then click <code>+</code> to add another expression, <code>ymax = "MEAN + SE"</code>.</li>
-<li class="fragment">Change the stack title to <code>Summary data</code>.</li>
+<li>Add a <code>customdata_block</code> with <code>demo</code> data.</li>
+<li>Add a <code>join_block</code> with <code>Stack = "lab_data"</code>, <code>type = "inner"</code>, <code>by = c("STUDYID", "USUBJID")</code></li>
 </ol></li>
 </ol>
+</div></div>
+</section>
+<section id="exercise-5-hemoglobin-by-visit-plot" class="slide level2">
+<h2>🧪 Exercise 5: Hemoglobin by Visit plot</h2>
+<div class="columns" style="font-size: 0.75em">
+<div class="column">
+<div class="cell">
+<div class="cell-output-display">
+<iframe class="html-fill-item" src="https://rinpharma2024.rinterface.com/#exercise-5" height="800" width="100%" style="border: 1px solid rgba(0,0,0,0.175); border-radius: .375rem;" allowfullscreen="" allow="autoplay" data-external="1"></iframe>
+</div>
 </div>
 </div><div class="column">
-<div>
-<ol start="4" type="1">
-<li class="fragment"><p>Click on <code>Add stack</code>, then add a <code>result_block</code>, targeting the <code>Summary data</code> stack:</p>
+<ol type="1">
+<li><p>Consider the previous 2 stacks (lab data merged with demo data).</p></li>
+<li><p>Click on <code>Add stack</code>, then add a <code>result_block</code>, targeting the <code>hb_data</code> stack:</p>
 <ol type="a">
-<li class="fragment">Add a <code>ggplot_block</code> with <code>x = "VISIT"</code> and <code>y = "MEAN"</code> as aesthetics.</li>
-<li class="fragment">Add a <code>geompoint_block</code> with <code>func = c("color", "shape")</code> and <code>default_columns = c("ACTARM", "ACTARM")</code>.</li>
-<li class="fragment">Add a <code>geomerrorbar_block</code> with <code>ymin = ymin</code>, <code>ymax = ymax</code> and <code>color = ACTARM</code>.</li>
-<li class="fragment">Add a <code>geomline_block</code> with <code>group = ACTARM</code> and <code>color = ACTARM</code>.</li>
-<li class="fragment">Add a <code>labs_block</code> with <code>title = "Mean and SD of Hemoglobin by Visit"</code>, <code>x = "Visit Label"</code> and <code>y = "Hemoglobin (g/dL)"</code>.</li>
-<li class="fragment">Add a <code>theme_block</code>, selecting whatever theme you like.</li>
-<li class="fragment">TBC…</li>
+<li>Add a <code>ggplot_block</code> with <code>x = "VISIT"</code> and <code>y = "Mean"</code> as aesthetics.</li>
+<li>Add a <code>geompoint_block</code> with <code>func = c("color", "shape")</code> and <code>default_columns = c("ACTARM", "ACTARM")</code>.</li>
+<li>Add a <code>geomerrorbar_block</code> with <code>ymin = ymin</code>, <code>ymax = ymax</code> and <code>color = ACTARM</code>.</li>
+<li>Add a <code>geomline_block</code> with <code>group = ACTARM</code> and <code>color = ACTARM</code>.</li>
+<li>Add a <code>labs_block</code> with <code>title = "Mean and SD of Hemoglobin by Visit"</code>, <code>x = "Visit Label"</code> and <code>y = "Hemoglobin (g/dL)"</code>.</li>
+<li>Add a <code>theme_block</code>, selecting whatever theme you like.</li>
+<li>TBC…</li>
 </ol></li>
 </ol>
-</div>
 </div></div>
 </section>
 <section id="how-far-can-i-go-with-blockr" class="slide level2" data-background-image="../../assets/images/undraw_add_post_re_174w.svg" data-background-size="90%" style="margin-left: 450px; margin-top: 700px; font-size: 1.5em">
diff --git a/slides/2-blockr-dev/blockr-dev.html b/slides/2-blockr-dev/blockr-dev.html
index 79e3b21..8c2b83c 100644
--- a/slides/2-blockr-dev/blockr-dev.html
+++ b/slides/2-blockr-dev/blockr-dev.html
@@ -10,7 +10,7 @@
 <link href="../../site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles"><meta charset="utf-8">
   <meta name="generator" content="quarto-1.5.57">
 
-  <meta name="author" content="Karma Tarap (BMS), John Coene (The Y Company) and David Granjon (cynkra GmbH)">
+  <meta name="author" content="David Granjon (cynkra GmbH), Karma Tarap (BMS) and John Coene (The Y Company)">
   <title>blockr.workshop – Introduction to blockr for developers</title>
   <meta name="apple-mobile-web-app-capable" content="yes">
   <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
@@ -402,7 +402,7 @@ <h1 class="title">Introduction to blockr for developers</h1>
 <div class="quarto-title-authors">
 <div class="quarto-title-author">
 <div class="quarto-title-author-name">
-Karma Tarap (BMS), John Coene (The Y Company) and David Granjon (cynkra GmbH) 
+David Granjon (cynkra GmbH), Karma Tarap (BMS) and John Coene (The Y Company) 
 </div>
 </div>
 </div>