separate into quartz plugin