added newInstance method