testing interfaces pattern
ditched interfaces over abstracts