update implementation logic