Abstraction class and docs