front-end functionality