I am a self-employed contractor, I am pretty new at this, only been doin it for about 40yrs. His bid was very low, I would guess for one of two reasons. He is either very young and inexperienced or he really, really needed the work. He made the fatal mistake of not including a "rock" clause in his agreement. By your description he did more then you asked, which makes me believe he is very consciencous about his work. He also didnt argue or give you a hard time about the money, you say he hinted? So your response will say more about "you". You can teach him a lesson and make him eat the extra work, something I was taught on more then one job. Or you can ask him what he feels a fair amount would be for the extra work, and negotiate from there. If the total was only $2800 and it took him an extra 20% in time you are not talking a whole lot of money. If it were a young guy doing work for me, and he did a great job, I would work with him.
Craig