add more usable functions