this version is pretty simply it could evolve to use inheritance, or traits