first iteration

- base functionality is present, but there is still lots of work to do like concurrency issues