add virtual logic