added typed properties, api breaking change