full validation