Basic functionallity with some work yet to do