initial commit, already works for basic structs