Basic functions achieved
Almost done, need to detail