if this is internal, it should be static