refactored fmap to be more correct - added val() function to unwrap a functor