add spec and code for edge class.
Merge branch 'edge' into develop