initial implementation done (still lots todo, though)