added projected gradient solver