adapt to compiler