Allows generating random headers.
Using unique pointers instead of raw pointers for actions.
Added a mechanism to generate random actions.
Using enum for action type instead of hardcoding in classes themselves.