selfmade stl-like classes