first implement of mapper
second complete implementation
Working copy
final