finish first version
use a v a -> d not =