why is this abstract? Would prefer it to be final and have a private constructor if it is not meant to be extended.