added the ability to pass a completionblock
fade duration definable