refactoring done
validation done