tons of changes and fine tuning