stable version, haven't test yet with obj