rename
add implementation in c++