Nowhere near finished, but working so nice it is worth a commit