added tons of code and updates