add to_s and inspect support and constructor auto-creation