add set method and allow recursive triggers