more
implement abstract
More changes
some tweaks
some more
tweaks