Hardcore refactoring + some old functionality is back