proper setup function
better comments
better documentation