Not very clean but overall good