Added infrastructure for adding other algorithms later
Todo items finished
Now restriction is it's own function. All transformations may be restricted