logic impl done