bug fix when color is modified in _filter() affect later parts
change _filter function spec, add parts dictionary for convenience