Refactor promotion into a method

Fix #70