I don't know if its okay to use other prelude functions in implementations