added edge interface
added edge implementation