because c++ can't do this, this easily