updated docs, completed implementation