Refactored from find_and_initialize
Use self :D