main is now a little bit more easy to understand