reworked init flow