implement several (in progress)