it's a start but doesn't cover every situation