implemented weight decay