I cannot go deeply in your code to see if this makes sense, but maybe this thread is useful to give you insights: