I haven't checked what this code do yet, but it feels wrong to separate expense category from income category