traverse etc. (fp in scala)