Updating PLR API for machine interfaces discussion

since you referred to this thread, i might as well reply here.

I think this Infinite example is confusing.

We can easily split concrete backends, but you are making abstract backends for specific devices. Can you clarify?