Functional abstractions makes more sense