simplify down to one method