Error Checking and implement all methods