use strategy pattern for reporting mode