start implementing visitor pattern