first pass on front end