initial working version
first version that actually compiles