add validations and tests