adding test and first implementation