A function from a group G to integers Z is called a quasi-morphism if there is a constant C such that for all g and h in G, |f(gh)-f(g)-f(h)| < C. Surprisingly, this idea has been useful.

I will overview the theory of quasi-morphisms including applications.

Then we discuss a recent work with M.Kapovich when we replace the target group from Z to a non-commutative group, for example, a free group.