add most of functions