reduced code redundancy