* hard to test
* code is harder to maintain
* vendor specific
* often written in very weird programming languages