changed validate from promises to callbacks