improve approval logical