+ Added cache, which speeds up the repetitive calculations
+ Returned variables, because they need for cached expressions