change private init methods to protected
fix path