reflection based mapping implemented, all tests passing