more static, leave gcc more space for optimization