new version - implement least-available piece selection