sceleton refactoring