Optimize & re-organize

- Remove unecessary generic functions
- Re-organize using cl-project in preparation for adding unit tests