diff --git a/README.md b/README.md
index 45ce77c..16dc6ae 100644
--- a/README.md
+++ b/README.md
@@ -1,48 +1,28 @@
# MPC-CBF
-Model Predictive Control with Control Barrier Functions
+We propose a control framework which unifies the model predictive control and control barrier functions. This is the reference implementation of our paper:
+### Safety-Critical Model Predictive Control with Discrete-Time Control Barrier Function
+[PDF](https://arxiv.org/abs/2007.11718) | [Code: Double Integratror](double-integrator-2D) | [Code: Car Racing](car-racing)
-![](car-racing/demo.gif)
+*Jun Zeng, Bike Zhang and Koushil Sreenath*
-# Prerequisites
-## Matlab
+
+
+#### Citing
+If you find this code useful in your work, please consider citing:
+```shell
+@article{zeng2020mpccbf,
+ title={Safety-critical model predictive control with discrete-time control barrier function},
+ author={Zeng, Jun and Zhang, Bike and Sreenath, Koushil},
+ journal={arXiv preprint arXiv:2007.11718},
+ year={2020}
+}
+```
+
+### Instructions
+Two independent markdown files are written to illustrate numerical examples of [double integrator](double-integrator-2D/README.md) and [racing car](car-racing/README.md).
+
+### Dependencies
+#### Matlab
The packages needed for running the code are [Yalmip](https://yalmip.github.io/) and [IPOPT](https://projects.coin-or.org/Ipopt/wiki/MatlabInterface).
-We also provide the zipped version of precompiled .mex files for IPOPT in the folder `packages` in case you don't have it. Unzip that file and add those .mex files into your MATLAB path.
-
-# Description
-## 2D double integrator
-The 2D double integrator is assigned to reach the target position at origin while avoiding obstacles. We have three classes for different controllers: `DCLF_DCBF.m` (DCLF-DCBF), `MPC_CBF.m` (MPC-CBF) and `MPC_DC` (MPC-DC), respectively.
-
-Moreover, to illustrate the performance among them, we have:
-* `main.m`: Run DCLF-DCBF/MPC-CBF/MPC-DC respectively.
-* `analysis_gamma.m`: Run analysis for different hyperparameter $\gamma$.
-* `analysis_horizon.m`: Run analysis for different horizon.
-
-We illustrate the performance between DCLF-DCBF/MPC-DC/MPC-CBF
-| DCLF-DCBF | MPC-DC (N=8) |
-| --- | --- |
-| | |
-
-| MPC-CBF (N=1) | MPC-CBF (N=8) |
-| --- | --- |
-| | |
-
-and also the safety performance for different numbers of horizon and hyperparameters
-| Different hyperparameter | Different horizon |
-| --- | --- |
-| | |
-
-## Car racing competition
-We have the speed profile and control input shown as follow,
-
-
-
-
-
-
-
-The animation can be found on the top of this readme, we will release full code after the paper is accepted.
-
-# References
-This repository is based on the following:
-* Jun Zeng, Bike Zhang and Koushil Sreenath. "Safety-Critical Model Predictive Control with Discrete-Time Control Barrier Function." [[PDF]](http://arxiv.org/abs/2007.11718)
+We also provide the zipped version of precompiled .mex files for IPOPT in the folder `packages` in case you don't have it. Unzip that file and add those .mex files into your MATLAB path.
\ No newline at end of file
diff --git a/car-racing/README.md b/car-racing/README.md
new file mode 100644
index 0000000..cf4011c
--- /dev/null
+++ b/car-racing/README.md
@@ -0,0 +1,12 @@
+### Car racing competition
+The source codes are mainly adapted from Ugo's LMPC code and there are some lagacy features which are not used in our paper.
+
+We simulate a car racing competition between several cars, and ego car's speed profile and control input are shown as follow,
+
+
+
+
+
+
+
+The animation can be found on the top of this readme, we will release full code after the paper is accepted.
\ No newline at end of file
diff --git a/double-integrator-2D/README.md b/double-integrator-2D/README.md
new file mode 100644
index 0000000..089626f
--- /dev/null
+++ b/double-integrator-2D/README.md
@@ -0,0 +1,21 @@
+### 2D double integrator
+The 2D double integrator is assigned to reach the target position at origin while avoiding obstacles. We have three classes for different controllers: `DCLF_DCBF.m` (DCLF-DCBF), `MPC_CBF.m` (MPC-CBF) and `MPC_DC` (MPC-DC), respectively.
+
+Moreover, to illustrate the performance among them, we have:
+* `main.m`: Run DCLF-DCBF/MPC-CBF/MPC-DC respectively.
+* `analysis_gamma.m`: Run analysis for different hyperparameter $\gamma$.
+* `analysis_horizon.m`: Run analysis for different horizon.
+
+We illustrate the performance between DCLF-DCBF/MPC-DC/MPC-CBF
+| DCLF-DCBF | MPC-DC (N=8) |
+| --- | --- |
+| | |
+
+| MPC-CBF (N=1) | MPC-CBF (N=8) |
+| --- | --- |
+| | |
+
+and also the safety performance for different numbers of horizon and hyperparameters
+| Different hyperparameter | Different horizon |
+| --- | --- |
+| |
\ No newline at end of file