direct initialization