Revise/rewrite doc, write first implementation (incomplete)