with content and sqlite is supported, and the code is refactor