final optimization
change folder structure

added tests