finish first draft of basic functionality + basic unitests