Entire implementation