Completed rewrite to use class for holding methods/results