data synthesis functions