add providers and controllers, move sockets into controller