In this work the we use a specific compiler pragma (^0.8.0). Moreover there is a proper use of require, where we check if the ammount sent for the purchase is not below the requested. Finally, we use modifiers provided by the imported contract Ownable.