gen-class :constructors guide how init instantite object and ret object state atom {} contains mutable fields