moved code around
renamed classes
separated spec