added shadow, some refractorings
implemented view delegate model