Refactor to support PCLs