nicer construct api