refactoring common code up into abstract meta