can we add some documentation to this function, explaining which circumstances it makes sense to relax the constraints in.  And maybe also what the term syncable means within this context.