added new async init function