abstraction source code