after testing, it turns out that trying to handle the direct getter/setter function will be so complex than I thought.