diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000000000000000000000000000000000000..1a59ed3f5756463975caf34318bcbbba2a9ac092
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,14 @@
+# http://editorconfig.org
+root = true
+
+[*]
+indent_style = tab
+indent_size = 4
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = false
+insert_final_newline = true
+
+[*.yml]
+indent_style = space
+indent_size = 2
diff --git a/.vscode/settings.json b/.vscode/settings.json
index e7ee0927659c27abccdcf0d169a21f96b9c7e254..89262cb208ca649f0388c2b4fe2fd2e2b6b9e355 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -8,6 +8,7 @@
 		"Dmytro",
 		"Dulmage",
 		"Edmonds",
+		"Eulerconst",
 		"Freivald",
 		"Freivalds",
 		"Fulkerson",
@@ -15,10 +16,18 @@
 		"Karp",
 		"Martello",
 		"Mendelsohn",
+		"ORAM",
 		"Rainer",
 		"Silvano",
+		"Untrusted",
 		"Zwick",
+		"alertblock",
+		"allcaps",
+		"allsmallcaps",
+		"amsalpha",
+		"approxident",
 		"arrowsize",
+		"beamer",
 		"bijection",
 		"bijective",
 		"binom",
@@ -26,15 +35,31 @@
 		"captionof",
 		"cheatsheets",
 		"chktex",
+		"colback",
+		"colframe",
 		"colsep",
 		"cryptosystem",
+		"cryptosystem's",
 		"dbogatov",
 		"distinguisher",
+		"ensuremath",
+		"eqref",
+		"frametitle",
+		"highlightline",
+		"highlightlinespecial",
+		"highlightmany",
+		"hltitlecodebox",
+		"hltitlecodeboxspecial",
+		"includegraphics",
+		"indist",
 		"indistinguishability",
+		"keepaspectratio",
 		"labelsep",
 		"linestyle",
 		"linewidth",
 		"lstlisting",
+		"mathbb",
+		"mathrm",
 		"midrule",
 		"mnode",
 		"multicols",
@@ -44,55 +69,31 @@
 		"myitemize",
 		"naput",
 		"ncput",
+		"negl",
 		"nicefrac",
 		"nonsaturating",
 		"noteq",
 		"npos",
+		"orams",
+		"parametrization",
 		"preflow",
+		"printf",
+		"progressbar",
+		"providecommand",
 		"psmatrix",
 		"psset",
 		"rearrangeable",
+		"smallcaps",
 		"subfigure",
-		"subtrees",
-		"toprule",
-		"Eulerconst",
-		"approxident",
-		"colback",
-		"colframe",
-		"cryptosystem's",
-		"ensuremath",
-		"eqref",
-		"printf",
-		"highlightline",
-		"highlightlinespecial",
-		"highlightmany",
-		"hltitlecodebox",
-		"hltitlecodeboxspecial",
-		"indist",
-		"mathbb",
-		"mathrm",
 		"subname",
+		"subtrees",
 		"tcblower",
 		"tcolorbox",
 		"textasciitilde",
 		"titlecodebox",
-		"ORAM",
-		"Untrusted",
-		"alertblock",
-		"allcaps",
-		"allsmallcaps",
-		"amsalpha",
-		"beamer",
-		"frametitle",
-		"includegraphics",
-		"keepaspectratio",
-		"negl",
-		"orams",
-		"parametrization",
-		"progressbar",
-		"providecommand",
-		"smallcaps",
 		"titleformat",
+		"toprule",
+		"unstashed",
 		"usetheme"
 	]
 }
\ No newline at end of file
diff --git a/packages.tex b/packages.tex
index f53f907013ea0a04f95fc53f469aeb10670570ee..d7dfe8bc611246d90493a83583141331b0cbfd54 100644
--- a/packages.tex
+++ b/packages.tex
@@ -4,3 +4,4 @@
 \usepackage{pgfpages}
 \usepackage{booktabs}
 \usepackage{bm}
+\usepackage{mathtools}
diff --git a/preamble.tex b/preamble.tex
index 1120c94d589b30473c29cfa13d8cad0c71134753..c43f04f7cf98c4201f67e2fedc6d715783498b85 100644
--- a/preamble.tex
+++ b/preamble.tex
@@ -38,3 +38,6 @@
 
 \newcommand{\BigO}[1]{\mathcal{O}\left(#1\right)}
 \newcommand{\RAM}{\textbf{RAM}}
+
+\DeclarePairedDelimiter\ceil{\lceil}{\rceil}
+\DeclarePairedDelimiter\floor{\lfloor}{\rfloor}
diff --git a/sections/path-oram-protocol.tex b/sections/path-oram-protocol.tex
index 54c8ffea8997a1072d9b3912d93d8768587d467a..82f56ba12de180baa5475f64e7438d207e8575c6 100644
--- a/sections/path-oram-protocol.tex
+++ b/sections/path-oram-protocol.tex
@@ -1 +1,75 @@
 \section{Path ORAM protocol}
+
+	\subsection{Overview}
+
+		\begin{frame}{Main invariant}
+			
+			The client stores a small amount of local data in a \textbf{stash}.
+			The server-side storage is treated as a \textbf{binary tree} where each node is a \textbf{bucket} that can hold up to a fixed number of \textbf{blocks}.
+
+			\begin{block}{Invariant}
+				At any time, each block is mapped to a uniformly random leaf bucket in the tree, and unstashed blocks are always placed in some bucket along the path to the mapped leaf.
+			\end{block}
+
+			\note{
+				An underlying data structure for PAth ORAM is a binary tree.
+				Client has a position table where each data block ID is mapped to the leaf node.
+				Each time access occurs, whole path from the leaf to the root gets read and written.
+				This ensures indistinguishability.
+			}
+		\end{frame}
+
+	\subsection{Server storage}
+
+		\begin{frame}{Binary tree}
+			
+			The server stores a binary tree data structure of height $L$ and $2^L$ leaves.
+			We then need $L = \ceil*{ \log_2 N }$. 
+			The levels of the tree are numbered $0$ to $L$ where level $0$ denotes the root of the tree and level $L$ denotes the leaves.
+
+			\note{
+				Let us define $L$ --- the height of our tree.
+				Then reasonably it will be equal to $\log_2 N$ rounded up.
+				Let us also define 0 level as root and $L$th level as leaves.
+			}
+		\end{frame}
+
+		\begin{frame}{Bucket}
+			
+			Each node in the tree is called a bucket. 
+			Each bucket can contain up to $Z$ real blocks. 
+			If a bucket has less than $Z$ real blocks, it is padded with dummy blocks to always be of size $Z$.
+
+			\note{
+				Each node in a tree is a bucket that contains $Z$ blocks.
+				For the sake of indistinguishability, we pad bucket with dummy encrypted blocks.
+				Choice of $Z$ is a parameter.
+				Experimental results show that small constant, eq.\ 4, will suffice.
+			}
+		\end{frame}
+
+		\begin{frame}{Path}
+			
+			Let $x \in \{ 0, 1, \ldots, 2^L - 1 \}$ denote the $x_{\text{th}}$ leaf node in the tree. 
+			Any leaf node $x$ defines a unique path from leaf $x$ to the root of the tree.
+			We use $\mathcal{P}(x)$ to denote set of buckets along the path from leaf $x$ to the root. 
+			Additionally, $\mathcal{P}(x,l)$ denotes the bucket in $\mathcal{P}(x)$ at level $l$ in the tree.
+
+			\note{
+				Let us define a path from leaf $x$ to root as $\mathcal{P}(x)$.
+				Let us also define $\mathcal{P}(x,l)$ as the bucket along the path at level $l$.
+			}
+		\end{frame}
+
+		\begin{frame}{Server storage}
+			
+			\begin{block}{Observation}
+				Total server storage used is about $Z \cdot N$ blocks.
+				Since $Z$ is s small constant, server storage is $\BigO{N}$.
+			\end{block} 
+
+			\note{
+				Let us make an important observation.
+				The total server storage used is the order of $N$ since $Z$ is s small constant.
+			}
+		\end{frame}