internal functions and internal calling completed