17, ugly but works