works on new compiler