moved toString() into Luminary