Some abstraction, added benchmark, renaming...