extended s3 functionality