contain some usable functions