added cached and parrallel methods