abstraction. by varderesyan
_