removed bug for saving and deleting in circumstances where sub objects are not initialized
used generics to remove some duplicate code in the mapper
added search and result handling