Improve abstraction