cpp: downcast: do static_cast outside class
cpp: downcast multiple layers, macro
rename
cleanup