Updated add method to be recursive, which is just cleaner