modify test & improve design