improve with warnings as errors