write a lot of code myself