added numerous stuff