implement first version of library. not even compiling yet