Wrote most of the implementation description