added tons of new functionality