I have a 2008 Dodge Charger 3.5L engine. We were gone for a little over a week and returned to below zero temps and a car with a dead battery. Jumped the car and let it run for a couple hours. Came back outside and car was off with battery drained again. Jump started it again (engine turned over only and after several attempts it started) and check engine light came on accompanied sputtering at 2500 RPM's. Slowly drove to parts store where P0016 and P0562 codes were discovered. Drove home. Had battery tested and charged, replaced Cam and Crank sensors, which resulted in P0562 code disappearing. P0016 code was thrown again after all this. Removed covers and checked timing. Off by two teeth. Ordered parts and replaced tensioner, tensioner pulley, water pump and belt. Got the crank and drivers side marks lined up but passenger off by 1/2 tooth. Car started fine, but after 1/2 check engine light came back along with P016 code. Attempted getting timing marks right approximately ten times and ended up with Crank spot on, drivers and passenger side cams on the inside edge of the timing mark (not perfect but pretty damn close). P0016 still there, traction control light on, car start is perfect, idle seems perfect, let's me hit 70MPH, but sputtering at approximately 3K RPM and in park it will not go past 3500K RPM once the car reaches normal operating temperature. Drove it a short distance to the store, check engine light was on, the traction control was not and I was able to accelerate to 4500 RPM (probably could have gone higher but I didn't try but car did have a small backfire). Is it possible the belt needs to stretch into place given that I'm changing it outside and it has been barely above freezing? Or is it reaching its normal length once car reaches operating temp hence my timing is getting off? Does the computer need to be red lashed after this procedure hence why I'm getting the code still? Or is this engine this touchy and really needing to be perfect? What am I missing here?