made not mandatory variables lazy