add data cashing of expensive calculations