hopefully finished. this is confusing