some changes to impl
merged