like mechanism refactoring