fix compiler, add some logic for initializers