added lots of @NotNull annotations