add "safe" function