this is c++, so why not add const everywhere?