avoid abstraction