this should explain some things