Implements support for alternative
Adds tests about alternatives
Remove begin and use declare
Removes unused test