now allows for two levels of initializers