How to recognize a bad software architecture at a glance: it looks like a layered wall made out of blocks. The worst ones have an upper layer of blocks and a lower layer of blocks, separated by a single layer spanning the whole, but with a mechanism to bypass it.
APIs are good. A specious barrier for accessing those APIs is bad.
If the pieces aren't abstracted correctly, wrapping a layer around the pieces isn't going to improve them.