add iterator/begin_end
move algorithm and numeric