update syntax
modify casting functions
use classes as template arguments instead of instances
add ml_util.h
add macro ML_STR()