use separate object for promises (vast performance boost)