Wrote basically everything (no tests, yet)