added support for projected gradient method