removed PCX P0 since it's terrible for abstraction and reuse