split star driver into separate compiler and printer class