make interfaces inherit from extend_interfaces, and use
DeclareInterfaceID
avoid trailing return types in interfaces
deprecate interface methods which take a string as argument,
provide method which takes an enum instead -- this avoids having
to create a string, and then parse it, on every call
prefer inheriting constructors
prefer std::abs over fabs
prefer std::transform over std::for_each
add const
move debug printout out of loop
simplify logic
prefer std::array over std::vector to avoid heap allocation
prefer passing std::array<>& over decayed pointers
prefer true/false over 1/0 assignments for bool
prefer std::array.fill over loops
simplify inside using lambda
prefer range-based for loops
prefer switch/case over if-else-if-else-if-
prefer boost::static_vector over std::vector if there is a known
upperlimit on the maximum size