modify getInstance and new