eval form
minor refactorings
usage and (help) function
put tests in separate folder
refactor: restructured and split into more files