implement First + tests
implement Single + tests