enhance some functions