added generic network layer