refactorized first version with SearchableRecord + tests