no warnings and no unnecessary variable creation