make constructor work without `new`