tailor some functions