add documentation about architecture