handler abstract & unit test