front-end functions