First commit .. code is basically working (not elegant, but working).