this was hard...