better naming
more tightening up
adds validations