stricter errors handling inside new()