added documentation, fixed Class Architecture