black-box functions