implementation function util