add more metadata, plus all-args constructor