@= a little refactored