improved initialization