Fully implemented and tested with dzil