implementation and documentaion #244