this is some learning c++ stuff