refactoring + empty seats support