keep static functions