added annotaton based generation