implemented vm class