Better defined query, now uses a registration method to associate model, and abstracted the ability to perform queries into the query prototype