need to write other spread methods and toString