constructor improvement