rewritten to have denser information and simpler design