some documentation + better structure