improve API interfaces, get rid of parameterized constrcutors