tweak
more implementations
merge