I placed the required! on the internal methods - I'll move these up to the public methods.