reduced redundant code