Initial commit of classes and tests