Add a base class for implementations.
use filter view and simplify
named placeholders
reduce includes