only moving code
giving constructor the bare minimum argument
unnecessary else's cause the if's throw exceptions
only moving code