This is the working prototype of my design. Now I just need to rename variable and
add some tests