Constructor, getter methods, and toString