done with validation