updated to fit my needs so far