modules almost entirely done :D