new post: crtp vs virtual function, update format