code refactor and declare dependencies as optional, except slick
Merge pull request #114 from tminglei/opt-dependencies

code refactor and declare dependencies as optional, except slick