Updated experimental branch to use IPOPT