added some definitions and annotations