protection from incorrect instantiation added