Automatic.
faster version