why is this so complicated?