added order splitting using specification pattern