linux compability... lots had to change