allow setting custom model change executor

write a test for #16