change to use reflection based method call