diff --git a/README.md b/README.md
index fdbf570bd6bf8a853606c66b4ab624592a6d86bf..e090864dae7cda59c4322138774d5984224068ce 100644
--- a/README.md
+++ b/README.md
@@ -67,125 +67,125 @@ for instructions.
 
 ### References and list of examples
 
-See [https://gitlab.idiap.ch/rli/pbdlib-cpp/blob/master/examples.md](https://gitlab.idiap.ch/rli/pbdlib-cpp/blob/master/examples.md)
+See [examples.md](./examples.md)
 
 
 ### Gallery
 
-demo\_GMR01
+[demo\_GMR01.cpp](./src/demo_GMR01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_GMR01.gif)
 
 ***
 
-demo\_MPC\_batch01
+[demo\_MPC\_batch01.cpp](./src/demo_MPC_batch01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_MPC_batch01.gif)
 
 ***
 
-demo\_MPC\_iterative01
+[demo\_MPC\_iterative01.cpp](./src/demo_MPC_iterative01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_MPC_iterative01.gif)
 
 ***
 
-demo\_MPC\_semitied01
+[demo\_MPC\_semitied01.cpp](./src/demo_MPC_semitied01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_MPC_semitied01.gif)
 
 ***
 
-demo\_MPC\_velocity01
+[demo\_MPC\_velocity01.cpp](./src/demo_MPC_velocity01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_MPC_velocity01.gif)
 
 ***
 
-demo\_online\_GMM01
+[demo\_online\_GMM01.cpp](./src/demo_online_GMM01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_online_GMM01.gif)
 
 ***
 
-demo\_proMP01
+[demo\_proMP01.cpp](./src/demo_proMP01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_proMP01.gif)
 
 ***
 
-demo\_Riemannian\_cov\_GMR01
+[demo\_Riemannian\_cov\_GMR01.cpp](./src/demo_Riemannian_cov_GMR01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_Riemannian_cov_GMR01.gif)
 
 ***
 
-demo\_Riemannian\_cov\_interp02
+[demo\_Riemannian\_cov\_interp02.cpp](./src/demo_Riemannian_cov_interp02.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_Riemannian_cov_interp02.gif)
 
 ***
 
-demo\_Riemannian\_pose\_batchLQR01
+[demo\_Riemannian\_pose\_batchLQR01.cpp](./src/demo_Riemannian_pose_batchLQR01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_Riemannian_pose_batchLQR01.gif)
 
 ***
 
-demo\_Riemannian\_pose\_infHorLQR01
+[demo\_Riemannian\_pose\_infHorLQR01.cpp](./src/demo_Riemannian_pose_infHorLQR01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_Riemannian_pose_infHorLQR01.gif)
 
 ***
 
-demo\_Riemannian\_quat\_infHorLQR01
+[demo\_Riemannian\_quat\_infHorLQR01.cpp](./src/demo_Riemannian_quat_infHorLQR01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_Riemannian_quat_infHorLQR01.png)
 
 ***
 
-demo\_Riemannian\_quat\_TPGMM01
+[demo\_Riemannian\_quat\_TPGMM01.cpp](./src/demo_Riemannian_quat_TPGMM01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_Riemannian_quat_TPGMM01.gif)
 
 ***
 
-demo\_Riemannian\_sphere\_GMM01
+[demo\_Riemannian\_sphere\_GMM01.cpp](./src/demo_Riemannian_sphere_GMM01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_Riemannian_sphere_GMM01.gif)
 
 ***
 
-demo\_Riemannian\_sphere\_infHorLQR01
+[demo\_Riemannian\_sphere\_infHorLQR01.cpp](./src/demo_Riemannian_sphere_infHorLQR01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_Riemannian_sphere_infHorLQR01.gif)
 
 ***
 
-demo\_Riemannian\_sphere\_product01
+[demo\_Riemannian\_sphere\_product01.cpp](./src/demo_Riemannian_sphere_product01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_Riemannian_sphere_product01.gif)
 
 ***
 
-demo\_Riemannian\_sphere\_TPGMM01
+[demo\_Riemannian\_sphere\_TPGMM01.cpp](./src/demo_Riemannian_sphere_TPGMM01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_Riemannian_sphere_TPGMM01.gif)
 
 ***
 
-demo\_TPbatchLQR01
+[demo\_TPbatchLQR01.cpp](./src/demo_TPbatchLQR01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_TPbatchLQR01.gif)
 
 ***
 
-demo\_TPGMMProduct01
+[demo\_TPGMMProduct01.cpp](./src/demo_TPGMMProduct01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_TPGMMProduct01.gif)
 
 ***
 
-demo\_TPGMR01
+[demo\_TPGMR01.cpp](./src/demo_TPGMR01.cpp)
 
 ![](https://gitlab.idiap.ch/rli/pbdlib-cpp/raw/master/images/demo_TPGMR01.gif)
diff --git a/examples.md b/examples.md
index 98a565e870f8ea7968b8d7d533718549493b6a4c..83d8dcab1babc6c46cd0af982b5c7af6b7a49618 100644
--- a/examples.md
+++ b/examples.md
@@ -3,7 +3,9 @@
 Did you find PbDlib useful for your research? Please acknowledge the authors in any academic publications that used parts of these codes.
 <br><br>
 
-[1] Tutorial (GMM, TP-GMM, MFA, MPPCA, GMR, LWR, GPR, MPC, LQR, trajGMM):
+#### Ref. [1] 
+**Tutorial (GMM, TP-GMM, MFA, MPPCA, GMR, LWR, GPR, MPC, LQR, trajGMM)**<br>
+[Link to publication](http://calinon.ch/papers/Calinon-JIST2015.pdf)
 ```
 @article{Calinon16JIST,
 	author="Calinon, S.",
@@ -18,7 +20,9 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in
 }
 ```
 
-[2] HMM, HSMM:
+#### Ref. [2] 
+**HMM, HSMM**<br>
+[Link to publication](http://calinon.ch/papers/Rozo-Frontiers2016.pdf)
 ```
 @article{Rozo16Frontiers,
 	author="Rozo, L. and Silv\'erio, J. and Calinon, S. and Caldwell, D. G.",
@@ -33,7 +37,9 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in
 }
 ```
 
-[3] Riemannian manifolds (S2,S3):
+#### Ref. [3] 
+**Riemannian manifolds (S2,S3)**<br>
+[Link to publication](http://calinon.ch/papers/Zeestraten-RAL2017.pdf)
 ```
 @article{Zeestraten17RAL,
 	author="Zeestraten, M. J. A. and Havoutis, I. and Silv\'erio, J. and Calinon, S. and Caldwell, D. G.",
@@ -48,7 +54,9 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in
 }
 ```
 
-[4] Riemannian manifolds (S+):
+#### Ref. [4] 
+**Riemannian manifolds (S+)**<br>
+[Link to publication](http://calinon.ch/papers/Jaquier-IROS2017.pdf)
 ```
 @inproceedings{Jaquier17IROS,
 	author="Jaquier, N. and Calinon, S.", 
@@ -61,7 +69,9 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in
 }
 ```
 
-[5] Semi-tied GMM:
+#### Ref. [5] 
+**Semi-tied GMM**<br>
+[Link to publication](http://calinon.ch/papers/Tanwani-RAL2016.pdf)
 ```
 @article{Tanwani16RAL,
 	author="Tanwani, A. K. and Calinon, S.",
@@ -76,7 +86,9 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in
 }
 ```
 
-[6] DP-means:
+#### Ref. [6] 
+**DP-means**<br>
+[Link to publication](http://calinon.ch/papers/Bruno-AURO2017.pdf)
 ```
 @article{Bruno17AURO,
 	author="Bruno, D. and Calinon, S. and Caldwell, D. G.",
@@ -91,7 +103,8 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in
 }
 ```
 
-[7] Shared control, adaptive teleoperation:
+#### Ref. [7] 
+**Shared control, adaptive teleoperation**<br>
 ```
 @inproceedings{Havoutis17ICRA,
 	author="Havoutis, I. and Calinon, S.",
@@ -104,7 +117,9 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in
 }
 ```
 
-[8] Keypoint-based motion edition through MPC:
+#### Ref. [8] 
+**Keypoint-based motion through MPC**<br>
+[Link to publication](http://calinon.ch/papers/Berio-GI2017.pdf)
 ```
 @inproceedings{Berio17GI,
 	author="Berio, D. and Calinon, S. and Fol Leymarie, F.",
@@ -118,7 +133,8 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in
 }
 ```
 
-[9] Adaptive assistance:
+#### Ref. [9] 
+**Adaptive assistance**<br>
 ```
 @article{Pignat17RAS,
 	author="Pignat, E. and Calinon, S.",
@@ -133,18 +149,6 @@ Did you find PbDlib useful for your research? Please acknowledge the authors in
 }
 ```
 
-[10] Gaussian Mixture Regression:
-```
-@article{Jaquier17IROS,
-    author="Jaquier, N. and Calinon, S.",
-    title="Gaussian Mixture Regression on Symmetric Positive Definite Matrices Manifolds: 
-    Application to Wrist Motion Estimation with s{EMG}",
-    year="2017, submitted for publication",
-    booktitle = "{IEEE/RSJ} Intl. Conf. on Intelligent Robots and Systems ({IROS})",
-    address = "Vancouver, Canada"
-}
-```
-
 
 ### List of examples
 
@@ -152,27 +156,26 @@ This project will build a number of executables, as listed in the table below.
 
 | Filename | ref. | Description |
 |----------|------|-------------|
-| demo\_infHorLQR01\_glsl | [1] | Discrete infinite horizon linear quadratic regulation |
-| demo\_GMR01 | [1] | Gaussian mixture model (GMM) and time-based Gaussian mixture regression (GMR) used for reproduction |
-| demo\_MPC\_batch01 | [1,8] | Model predictive control (MPC) with batch linear quadratic tracking (LQT) formulation |
-| demo\_MPC\_iterative01 | [1,8] | Model predictive control (MPC) with iterative linear quadratic tracking (LQT) formulation |
-| demo\_MPC\_semitied01 | [5,8] | MPC with semi-tied covariances |
-| demo\_MPC\_velocity01 | [1,8] | MPC with an objective including velocity tracking |
-| demo\_online\_GMM01 | [6] | Online GMM learning and LQR-based trajectory generation |
-| demo\_online\_HSMM01 | [2,7] | Online HSMM learning and sampling with LQR-based trajectory generation |
-| demo\_proMP01 | [] | Conditioning on trajectory distributions with ProMP |
-| demo\_Riemannian\_cov\_GMR01 | [10] | GMR with time as input and covariance data as output by relying on Riemannian manifold |
-| demo\_Riemannian\_cov\_interp02 | [4] | Covariance interpolation on Riemannian manifold from a GMM with augmented covariances |
-| demo\_Riemannian\_pose\_batchLQR01 | [] | Linear quadratic regulation of pose by relying on Riemannian manifold and batch LQR (MPC without constraints) |
-| demo\_Riemannian\_pose\_GMM01 | [] | GMM for 3D position and unit quaternion data by relying on Riemannian manifold |
-| demo\_Riemannian\_pose\_infHorLQR01 | [] | Linear quadratic regulation of pose by relying on Riemannian manifold and infinite-horizon LQR |
-| demo\_Riemannian\_pose\_TPGMM01 | [] | TP-GMM of pose (R3 x S3) with two frames |
-| demo\_Riemannian\_quat\_infHorLQR01 | [3] | Linear quadratic regulation on hypersphere (orientation as unit quaternions) by relying on Riemannian manifold and infinite-horizon LQR |
-| demo\_Riemannian\_quat\_TPGMM01 | [] | TP-GMM on S3 (unit quaternion) with two frames |
-| demo\_Riemannian\_sphere\_GMM01 | [3] | GMM for data on a sphere by relying on Riemannian manifold |
-| demo\_Riemannian\_sphere\_infHorLQR01 | [3] | Linear quadratic regulation on a sphere by relying on Riemannian manifold and infinite-horizon LQR |
-| demo\_Riemannian\_sphere\_product01 | [] | Gaussian product on sphere |
-| demo\_Riemannian\_sphere\_TPGMM01 | [3] | TP-GMM for data on a sphere by relying on Riemannian manifold (with single frame) |
-| demo\_TPbatchLQR01 | [1] | Linear quadratic control (unconstrained linear MPC) acting in multiple frames, which is equivalent to the fusion of Gaussian controllers |
-| demo\_TPGMMProduct01 | [] | Product of Gaussians for a Task-Parametrized GMM |
-| demo\_TPGMR01 | [] | Task-Parametrized GMM with GMR (time as input), the model is able to adapt to continuously changing task parameters. |
+| [demo_GMR01.cpp](./src/demo_GMR01.cpp) | [[1]](#ref-1) | Gaussian mixture model (GMM) and time-based Gaussian mixture regression (GMR) used for reproduction |
+| [demo_MPC_batch01.cpp](./src/demo_MPC_batch01.cpp) | [[1]](#ref-1), [[8]](#ref-8) | Model predictive control (MPC) with batch linear quadratic tracking (LQT) formulation |
+| [demo_MPC_iterative01.cpp](./src/demo_MPC_iterative01.cpp) | [[1]](#ref-1), [[8]](#ref-8) | Model predictive control (MPC) with iterative linear quadratic tracking (LQT) formulation |
+| [demo_MPC_semitied01.cpp](./src/demo_MPC_semitied01.cpp) | [[5]](#ref-5), [[8]](#ref-8) | MPC with semi-tied covariances |
+| [demo_MPC_velocity01.cpp](./src/demo_MPC_velocity01.cpp) | [[1]](#ref-1), [[8]](#ref-8) | MPC with an objective including velocity tracking |
+| [demo_online_GMM01.cpp](./src/demo_online_GMM01.cpp) | [[6]](#ref-6) | Online GMM learning and LQR-based trajectory generation |
+| [demo_online_HSMM01.cpp](./src/demo_online_HSMM01.cpp) | [[2]](#ref-2), [[7]](#ref-7) | Online HSMM learning and sampling with LQR-based trajectory generation |
+| [demo_proMP01.cpp](./src/demo_proMP01.cpp) | [] | Conditioning on trajectory distributions with ProMP |
+| [demo_Riemannian_cov_GMR01.cpp](./src/demo_Riemannian_cov_GMR01.cpp) | [[4]](#ref-4) | GMR with time as input and covariance data as output by relying on Riemannian manifold |
+| [demo_Riemannian_cov_interp02.cpp](./src/demo_Riemannian_cov_interp02.cpp) | [[4]](#ref-4) | Covariance interpolation on Riemannian manifold from a GMM with augmented covariances |
+| [demo_Riemannian_pose_batchLQR01.cpp](./src/demo_Riemannian_pose_batchLQR01.cpp) | [] | Linear quadratic regulation of pose by relying on Riemannian manifold and batch LQR (MPC without constraints) |
+| [demo_Riemannian_pose_GMM01.cpp](./src/demo_Riemannian_pose_GMM01.cpp) | [] | GMM for 3D position and unit quaternion data by relying on Riemannian manifold |
+| [demo_Riemannian_pose_infHorLQR01.cpp](./src/demo_Riemannian_pose_infHorLQR01.cpp) | [] | Linear quadratic regulation of pose by relying on Riemannian manifold and infinite-horizon LQR |
+| [demo_Riemannian_pose_TPGMM01.cpp](./src/demo_Riemannian_pose_TPGMM01.cpp) | [] | TP-GMM of pose (R3 x S3) with two frames |
+| [demo_Riemannian_quat_infHorLQR01.cpp](./src/demo_Riemannian_quat_infHorLQR01.cpp) | [[3]](#ref-3) | Linear quadratic regulation on hypersphere (orientation as unit quaternions) by relying on Riemannian manifold and infinite-horizon LQR |
+| [demo_Riemannian_quat_TPGMM01.cpp](./src/demo_Riemannian_quat_TPGMM01.cpp) | [] | TP-GMM on S3 (unit quaternion) with two frames |
+| [demo_Riemannian_sphere_GMM01.cpp](./src/demo_Riemannian_sphere_GMM01.cpp) | [[3]](#ref-3) | GMM for data on a sphere by relying on Riemannian manifold |
+| [demo_Riemannian_sphere_infHorLQR01.cpp](./src/demo_Riemannian_sphere_infHorLQR01.cpp) | [[3]](#ref-3) | Linear quadratic regulation on a sphere by relying on Riemannian manifold and infinite-horizon LQR |
+| [demo_Riemannian_sphere_product01.cpp](./src/demo_Riemannian_sphere_product01.cpp) | [] | Gaussian product on sphere |
+| [demo_Riemannian_sphere_TPGMM01.cpp](./src/demo_Riemannian_sphere_TPGMM01.cpp) | [[3]](#ref-3) | TP-GMM for data on a sphere by relying on Riemannian manifold (with single frame) |
+| [demo_TPbatchLQR01.cpp](./src/demo_TPbatchLQR01.cpp) | [[1]](#ref-1) | Linear quadratic control (unconstrained linear MPC) acting in multiple frames, which is equivalent to the fusion of Gaussian controllers |
+| [demo_TPGMMProduct01.cpp](./src/demo_TPGMMProduct01.cpp) | [] | Product of Gaussians for a Task-Parametrized GMM |
+| [demo_TPGMR01.cpp](./src/demo_TPGMR01.cpp) | [] | Task-Parametrized GMM with GMR (time as input), the model is able to adapt to continuously changing task parameters. |