use first-class class objects