starting to turn this into a proper system