start abstraction