GCC and specifically GCC6 really don't like inheriting common code, requires redefining almost everything.
Co-authored-by: Gleb Mazovetskiy <glex.spb@gmail.com>