when called as a function return a new C2S object, don't override toString for easier debugging
add version