bug: must new() ctor