better constructor
setup init