updated with more links and references
think this is the final version