Abstract the backend and add S3 implementation