add test and some working code, still WIP