more impl. and test