Add implementation and documentation