implementing s3 correctly, passing all tests