refactor ridiculous Add method