better initialization pattern