Also look at the difference between the e90 suspension (Bottom pic) compared with the e46 suspension (top pic). What did they do?!
If no codes are being thrown use Chevron Techron fuel injector cleaner (concentrate). It solves rpm fluctuating upon cold start-up. Also, for most BMW problems start off by scanning your car with the Peake Research Tool. It contains the actual BMW codes. If you want to register a newly installed battery for free (just buy a $10 cable) and google/download BMWLogger