begin abstraction