now MCommand uses template function at internal as much as possible.