refactor alternative constructor of system