Add create and delete feature, and refactoring