add pure declarations and reorganize a bit
add some stuff
reorganize everything