Interfaces should be strictly separated from the internal application code, with generic layers between them. To do it otherwise means ending up with a "big ball of mud" style app, that cannot have its interface redesigned in any way other than by refactoring it completely.