split method to reduce complexity