move shared code