separate common and generic parts