refactor model and include admm (incomplete)