add some definitions and ideas