front-end is hard