deferred init and some utils