basic functionality

there are still some bugs to shoot but this is nearly submittable