You could create an object that exposed an IPrefetchPath member, then modify this objects prefetch path member as needed, then pass the object to the GetPO method, and use the objects prefetch path member instead of encapsulatiing the prefetch path in the GetPO method.
As it stands now, if the GetPO method is in the BLL then it appears to be completely decoupled from the GUI.
Lets say that you find this approach somewhat appealing, you could create a series of overloaded constructors that the caller could use when creating this object that would initialize the object with "defaul sets" of predefined prefetch paths and then maybe a constructor that uses a parameter array so the creator could get totally crazy and specify as many prefetch objects as they wanted at instatiation time.
You could also create an overload of the GetPO method that would accept additional pf path objects that would be appended to the already encapsulate prefetch path object. That way you could simply just make the change on the client and be done with the change, because chances are that you had to change the client anyway.
Does this make sense or am I missing the question?