non-modifying
simplified api, but is not "functional" (paradigm)