Make it possible to define additional methods by providing a block to the constructor
Copy the input to protect against it being mutated
Protect against overwriting methods in the constructor