not the best but it does the job