Finished Project with basic tests included.