implement each laizily (not useful at all)