It's not a terrible workaround to be honest. ....
The 'terrible' part is this: - the compiler will allow you to declare a variable of type Algo- the compiler will allow you to declare an array with elements of type Algo
- the compiler will allow you to use Algo as a type argument - the compiler will allow you to use Algo as a parameter - the compiler will allow you to use Algo as a return type