finished with validation