add Smart Proxy Pattern