added the limitations back to the project and separated most of them in a middleware