refactored some names etc and added validation lib