add main for testing
add custom queue which is a wrapper around std::vector to ensure nothrow move construction
change std::queue to custom queue in get function for system tuples
change std::queue to custom queue in system tuple
change destructor of basic system to non pure virtual and default it. its not necessary since update is pure virtual