Add quanity choice && Optimize state change functionon