most of important lazy functions done