use block rather than method call