started implementation in go