make parameter types public, add constructors [ci skip]