building from scratch first pass