wrapped more internal functions