better structure and docs