adding better initialization functions