first working version
Use lazy map