modified to have a reuseable *_helper func