Added end marker back and updated generator script
Changed all maths methods to accept datasets
Updated generator script
Loosened constructors to allow any datasets as the argument
Moved factory methods to separate class and delegated old methods