some more functions to part 2