static functions are weird, but I think they stay