refactored creator functions