slightly more rational cpp