set up abstraction