first try on lazy-evaluation working