added several changes,
added support to abstract generic crud