Use more stable versions of dependencies instead of master branches

This makes it possible to avoid conflicts with some other packages.
Make all private methods protected so they can be overriden