CP setter check should be based on argument length
more tests and fixes