Working, very rough preliminary version