Made everything a bit more sensible
Type level signatures