semi-permanent constructor