update test and rework some implements