make polygon implementation more clear in CM