"Finished" for now, maybe do more updates once I have a better base for OO design