added soft deletes, and auto maintain timestamp