Switched to numpy

- nicer OO-design
- general cleanup
- added test-cases