Edge constructor