cleanup
 proper checking for property changes
 further optimization to only stroke and fill when the properties have changed