Renaming parameter names to allow more readability
Adding overrides to compliance with jls
Adding docs to explain the expected behaviour
Adding test class to check external behavior